En général l'une de ces cinq choses : l'instantané de données, les graines aléatoires, les versions des bibliothèques et de CUDA, les noyaux GPU non déterministes, ou des différences matérielles de comportement en virgule flottante. Figez les données par instantané daté plutôt que par requête en direct, initialisez chaque source d'aléa y compris les workers du chargeur de données, conteneurisez l'environnement, et acceptez qu'un déterminisme bit à bit exact sur GPU coûte en performance et ne vaut pas toujours son prix.
Pourquoi les recruteurs posent cette question
Le recruteur vérifie que vous comprenez la reproductibilité comme un ensemble de contrôles concrets plutôt que comme une vertu. Le signal le plus fort, c'est de savoir que les réductions GPU sont non déterministes par défaut et que forcer le déterminisme a un vrai coût en vitesse, plus de savoir que les données sont le coupable le plus fréquent parce qu'elles changent sous vos pieds sans le moindre changement de code.
Comment structurer votre réponse
- Listez les causes candidates par ordre de probabilité.
- Mettez l'instantané de données en premier parce qu'il change en silence.
- Couvrez l'initialisation de chaque source d'aléa, workers du chargeur inclus.
- Expliquez le non-déterminisme GPU et le coût de le forcer.
- Dites quel niveau de reproductibilité vaut vraiment son prix.
Exemple de réponse
Je descends une liste, le plus probable d'abord. Les données, presque toujours. Si la requête d'entraînement lit une table vivante, elle a changé entre mon exécution et la leur, et aucune graine n'y changera rien, donc l'entraînement lit un instantané daté avec un nombre de lignes enregistré. Ensuite les graines, et pas seulement celle du framework : le random de Python, NumPy, le framework, et surtout les workers du chargeur de données, dont chacun a besoin de sa propre graine pour que le mélange et l'augmentation soient reproductibles aussi. Puis l'environnement, et c'est pour ça que l'entraînement tourne dans un conteneur avec des versions figées de bibliothèques et de CUDA plutôt que dans ce que quelqu'un a sous la main. Après ça, on entre dans le non-déterminisme GPU. Certains noyaux utilisent une accumulation atomique, donc l'ordre de réduction varie d'une exécution à l'autre et vous obtenez de minuscules différences en virgule flottante qui se composent sur des milliers de pas. Vous pouvez forcer des algorithmes déterministes, mais ça désactive les noyaux rapides et je l'ai vu coûter vingt pour cent ou plus. Donc je demande ce dont nous avons vraiment besoin. Pour une investigation de débogage ou un modèle réglementé, je paie le déterminisme bit à bit. Normalement je n'ai besoin que de résultats qui coïncident au bruit près, et je le démontre en relançant deux fois la même configuration et en montrant la dispersion.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Comment montreriez-vous qu'une différence est dans le bruit d'une exécution à l'autre ?
- Quels drapeaux de framework forcent des noyaux déterministes, et que coûtent-ils ?
- Comment rendez-vous une exécution distribuée reproductible sur un nombre de nœuds différent ?
Autres questions pour Ingénieur machine learning
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions