J'ai complété ce tutorial sur des expériences de flux tensoriel distribué dans une expérience ML Engine et je cherche à définir mon propre niveau personnalisé au lieu du niveau STANDARD_1
qu'ils utilisent dans leur fichier config.yaml. Si vous utilisez l'API tf.estimator.Estimator
, y a-t-il des modifications de code supplémentaires nécessaires pour créer un niveau personnalisé de n'importe quelle taille? Par exemple, l'article suggère: «Si vous distribuez 10 000 lots parmi 10 nœuds de travail, chaque nœud fonctionne sur environ 1 000 lots. donc cela suggérerait le fichier config.yaml serait possible ci-dessousModifications de code nécessaires pour l'expérience personnalisée de moteur ML distribuée
trainingInput:
scaleTier: CUSTOM
masterType: complex_model_m
workerType: complex_model_m
parameterServerType: complex_model_m
workerCount: 10
parameterServerCount: 4
de tout changement de code nécessaires pour le tutoriel mnist pour pouvoir utiliser cette configuration personnalisée? Cela répartirait-il le nombre X de lots parmi les 10 travailleurs comme le suggère le tutoriel serait possible? J'ai poussé autour de quelques-uns des autres échantillons ML moteur et a constaté que reddit_tft utilise la formation distribuée, mais ils semblent avoir défini leur propre runconfig.cluster_spec
dans leur paquet formateur: task.py même si elles utilisent également l'API estimateur. Donc, y a-t-il une configuration supplémentaire nécessaire? Ma compréhension actuelle est que si vous utilisez l'API Estimator (même dans votre propre modèle défini), il ne devrait pas y avoir de changements supplémentaires.
Est-ce que tout de ce changement si le config.yaml spécifie en utilisant les GPU? Cette article suggère pour l'API estimateur « Aucun changement de code sont nécessaires aussi longtemps que votre ClusterSpec est correctement configuré. Si un cluster est un mélange d'unités centrales et processeurs graphiques, la carte le nom du travail ps pour les CPU et le nom de l'emploi des travailleurs aux processeurs graphiques. " Cependant, étant donné que config.yaml identifie spécifiquement le type de machine pour les serveurs de paramètres et les travailleurs, je m'attends à ce que dans ML-Engine, le ClusterSpec soit configuré correctement en fonction du fichier config.yaml. Cependant, je ne suis pas en mesure de trouver une documentation de moteur ml qui confirme qu'aucun changement n'est nécessaire pour tirer parti des GPU.
dernier, au sein de ML-Engine Je me demande s'il y a des façons d'identifier l'utilisation de configurations différentes? La ligne "Si vous distribuez 10 000 lots parmi 10 nœuds de travail, chaque nœud fonctionne sur environ 1 000 lots." suggère que l'utilisation de travailleurs supplémentaires serait à peu près linéaire, mais je n'ai aucune intuition sur la façon de déterminer si plus de serveurs de paramètres sont nécessaires? Que serait-il possible de vérifier (soit dans les tableaux de bord de cloud ou de tensorboard) pour déterminer s'ils ont un nombre suffisant de serveurs de paramètres?
Je comprends que l'exemple MNIST ne nécessite aucun changement de code. Cependant, que se passe-t-il si j'utilise 'tf.estimator.Estimator' et que je définis mon propre modèle_fn? Votre réponse continue à référencer 'tf.estimator' et il n'est pas clair si tout ceci s'applique aussi à tf.estimator.Estimator comme le demande ma question. Leur documentation suggère que "Le principal changement pour que la version distribuée fonctionne est l'utilisation de la variable d'environnement TF_CONFIG La variable d'environnement est générée à l'aide de gcloud et analysée pour créer une classe ClusterSpec." ce qui semble indiquer qu'il y a un changement nécessaire? – reese0106
Mise à jour du message pour faire référence à tf.estimator.Estimator. Aussi ajouté des informations sur les setters de périphériques, car ils sont ce que font la magie et ils sont les consommateurs de RunConfig, qui à son tour est ce qui analyse la variable TF_CONFIG. – rhaertel80