Profilez avant d'optimiser : décomposez les 400 millisecondes en récupération des caractéristiques, prétraitement, passe avant du modèle et réseau, parce que le modèle n'est souvent pas la plus grosse part. Puis attaquez la plus grosse pièce. Les gains habituels sont la concurrence sur les lectures de caractéristiques, la mise en cache, la quantification, un runtime compilé, un modèle distillé, et le déplacement de travail hors du chemin de la requête. Visez le p99 précisément, pas la moyenne.
Pourquoi les recruteurs posent cette question
C'est une question de systèmes déguisée en ML, et les recruteurs veulent voir que vous mesurez avant d'optimiser. Les candidats qui proposent immédiatement un modèle plus petit devinent. Nommer les composants hors modèle, surtout la récupération des caractéristiques et la sérialisation, et savoir qu'une queue très au-dessus de la médiane signale en général de la mise en file d'attente ou des démarrages à froid, sont les marqueurs de quelqu'un qui a exploité un service.
Comment structurer votre réponse
- Refusez d'optimiser avant d'avoir une décomposition des 400 ms.
- Nommez les composants que vous chronométreriez séparément.
- Ordonnez les correctifs selon la taille de la part qu'ils attaquent.
- Notez que le p99 pointe en général vers la mise en file d'attente, les démarrages à froid ou le ramasse-miettes.
Exemple de réponse
Je ne toucherais pas au modèle tant que je n'ai pas la décomposition. Je trace une requête de bout en bout et je chronomètre la récupération des caractéristiques, la désérialisation, le prétraitement, la passe avant, le post-traitement et le réseau. Chaque fois que je l'ai fait sur un service qui semblait lent, le modèle représentait une minorité du temps. Le dernier tournait autour de 400 millisecondes au total, dont environ 90 dans le modèle et plus de 200 à attendre trois lectures séquentielles de caractéristiques sur un magasin distant. Corriger ça n'était pas un problème de ML, c'était les émettre en parallèle et mettre en cache les deux qui ne changeaient que chaque jour, et ça seul nous a fait la plus grande partie du chemin. Ensuite je regarde le modèle : batching dynamique, quantification int8, ou export vers un runtime compilé comme ONNX Runtime ou TensorRT, ce qui sur les modèles plus petits donne fréquemment un facteur deux à trois sans coût en exactitude. L'autre chose sur le p99 en particulier, c'est qu'une queue aussi loin au-dessus de la médiane n'est en général pas du calcul du tout, c'est de la file d'attente sous charge, un démarrage à froid sur une réplique fraîche, ou du ramasse-miettes. Donc je vérifie si le p50 va déjà bien, parce que si c'est le cas, le correctif est de la capacité et des pools préchauffés.
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 le batching dynamique aide-t-il le débit tout en nuisant à la latence d'une requête isolée ?
- Que mettriez-vous en cache, et comment l'invalideriez-vous ?
- Comment feriez-vous un test de charge pour trouver le point où la queue explose ?
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