Assistez au symposium Women in ML le 7 décembre Inscrivez-vous maintenant

Problèmes connus

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

La compilation avec XLA peut grandement améliorer les performances de vos programmes, mais l'interopérabilité TensorFlow présente un certain nombre d'angles aigus connus.

tf.Variable sur un autre appareil

Message d'erreur : INVALID_ARGUMENT: Trying to access resource <Variable> (defined @ <Loc>) located in device CPU:0 from device GPU:0

Le cluster XLA s'exécute sur un seul appareil et ne peut ni lire ni écrire sur tf.Variable situé sur un autre appareil. Habituellement, ce message d'erreur indique que la variable n'a pas été placée sur le bon périphérique pour commencer. Le message d'erreur doit spécifier précisément l'emplacement de la variable incriminée.

L'interconversion TensorArray TF/XLA n'est pas prise en charge

Message d'erreur : Support for TensorList crossing the XLA/TF boundary is not implemented .

XLA prend en charge tf.TensorArray . Cependant, l' interconversion entre les représentations TF et XLA n'est pas encore implémentée. Cette erreur survient souvent lorsque le TensorArray est utilisé à l'intérieur du bloc compilé, mais que la dérivée est prise à l'extérieur.

Solution : compilez la portée la plus externe qui prend la dérivée.

TensorFlow tandis que les boucles doivent être délimitées (ou avoir la backprop désactivée)

Message d'erreur : XLA compilation requires a fixed tensor list size. Set the max number of elements. This could also happen if you're using a TensorArray in a while loop that does not have its maximum_iteration set, you can fix this by setting maximum_iteration to a suitable value .

Les boucles TF while créées à l'aide tf.while_loop prennent en charge la rétropropagation en accumulant tous les résultats intermédiaires dans un TensorArray , mais XLA ne prend en charge que les TensorArray bornés.

Solution : toutes les boucles while compilées doivent avoir le paramètre maximum_iterations défini sur une valeur constante connue au moment de la compilation, ou la rétropropagation désactivée à l'aide back_prop=False .

Le tf.TensorArray dynamique n'est pas pris en charge

Les écritures dans tf.TensorArray(..., dynamic_size=True) ne sont pas compilables avec XLA, car de telles écritures nécessitent un nombre inconnu de réallocations lorsque le tableau dépasse la limite d'origine.

Solution : fournissez une liaison connue statiquement à vos tableaux.

La génération de nombres aléatoires ignore la graine TF

XLA ignore actuellement les graines TF pour les opérations aléatoires. Cela affecte les opérations aléatoires TF avec état, telles que tf.random.normal ou tf.nn.dropout . XLA se comportera comme si la compilation était ensemencée avec une nouvelle graine unique à chaque exécution dans le même processus (la première exécution du processus donnera toujours le même résultat).

Solution : utilisez les RNG recommandés tels que tf.random.stateless_uniform ou le tf.random.Generator directement.

Les entrées obligatoires qui sont des fonctions de variables d'induction ne sont pas prises en charge

Message d'erreur : XLA compilation requires that operator arguments that represent shapes or dimensions be evaluated to concrete values at compile time. This error means that a shape or dimension argument could not be evaluated at compile time, usually because the value of the argument depends on a parameter to the computation, on a variable, or on a stateful operation such as a random number generator .

XLA nécessite que certaines valeurs soient connues au moment de la compilation, telles que l'axe de réduction d'une opération de réduction ou les dimensions de transposition. Considérons le cas où, par exemple, l'axe de réduction est défini en fonction d'une variable d'induction de tf.range : le résoudre statiquement n'est pas possible sans dérouler toute la boucle, ce qui pourrait ne pas être souhaité par l'utilisateur.

Solution : Déroulez les boucles, par exemple en convertissant tf.range en Python range .