variable scope of `@thunk`
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 32/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- julia
- Área
- backend, machine-learning
Línea de trabajo
Empieza revisando la macro @thunk, la ruta _usethunks() y issue #683 para entender el comportamiento previsto para second-order AD. Reproduce el problema de caller-scope y de inestabilidad de tipos de Core.Box; después, verifica las comprobaciones pertinentes de estabilidad de tipos de rrule en NeuralAttentionlib.jl, preservando al mismo tiempo el comportamiento correcto de thunk en ambas ramas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
#683 introduces a separate path when creating the thunk (_usethunks() ? Thunk($(esc(func))) : $(esc(body))). However, this would introduce new variables into the caller's scope and create Core.Box thus causing type instability, which breaks some rrule type stability checks in NeuralAttentionlib.jl.
Currently, I have two ways to solve this:
- replace
$(esc(body))with$(esc(func))()which turns the else path into a function call, thus no variable introduction. - mimic how
@asyncand@spawnusing$to interpolate values. so@thunkwould be defined as:
macro thunk(body)
letargs = Base._lift_one_interp!(body)
func = Base.replace_linenums!(:(()->($(esc(body)))), __source__)
return quote
if _usethunks()
let $(letargs...)
Thunk($func)
end
else
let $(letargs...)
$(esc(body))
end
end
end
end
However, I don't understand #683 enough to see what would be better for 2nd order AD. Maybe @pxl-th or @mcabbott would have some thoughts on this.
- Lenguaje dominante
- Julia
- Estrellas
- 267
- Forks
- 66
- Merge medio
- 1 d 1 h
- PR fusionados (30 d)
- 9
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JuliaDiff/ChainRulesCore.jl
-
Destructuring/iterating a `Tangent` does not unthunk fields, unlike `getindex`/`getproperty`Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 28/100
JuliaDiff/ChainRulesCore.jl#712 ·
Los mantenedores suelen responder en 1 día
-
good first issue Structural Tangent
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
JuliaDiff/ChainRulesCore.jl#669 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
JuliaDiff/ChainRulesCore.jl#668 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
-
breaking
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
JuliaDiff/ChainRulesCore.jl#665 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
JuliaDiff/ChainRulesCore.jl#664 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de JuliaDiff/ChainRulesCore.jl
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Sienna-Platform/InfrastructureSystems.jl#675 ·
Los mantenedores suelen responder en 2 días
-
TargetEncoder reuses the first level's shrinkage factor for all levels when m > 0Posiblemente ocupada @parth-patel010 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
JuliaAI/MLJTransforms.jl#95 · 1 comentario ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
SciML/RecursiveArrayTools.jl#687 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
SciML/LinearSolve.jl#1412 ·
Los mantenedores suelen responder en 8 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
SciML/Corleone.jl#179 ·
Los mantenedores suelen responder en 1 día