2017-10-16 19 views
1

Je cherche à transférer d'une structure d'apprentissage de machine de production différente à TensorFlow. Dans notre système actuel de formation et d'inférence, nous chargeons des copies de notre modèle sur autant de GPU que sur la machine. Je voudrais conserver cette façon d'équilibrer la charge pour le moment. Où puis-je trouver un exemple simple de chargement d'une copie d'un modèle TF sur chaque GPU disponible sur une machine?Exemple de TensorFlow simple chargement d'une copie d'un modèle sur chaque GPU qui est disponible

Répondre

1

Voici un exemple de https://github.com/rafaljozefowicz/lm/blob/master/language_model.py#L21

Vous enveloppez votre code de création de modèle en fonction _forward, puis appelez une fois pour chaque GPU

for i in range(hps.num_gpus): 
     with tf.device(assign_to_gpu(i, ps_device)), tf.variable_scope(tf.get_variable_scope(), 
                     reuse=True if i > 0 else None): 
      loss = self._forward(i, xs[i], ys[i], ws[i]) 
      losses += [loss] 
      if mode == "train": 
       cur_grads = self._backward(loss, summaries=(i == hps.num_gpus - 1)) 
       tower_grads += [cur_grads] 

    self.loss = tf.add_n(losses)/len(losses) 
+0

Je suppose que je ne comprends pas cet exemple. On dirait que le forward se propage sur un GPU puis sur un autre GPU. En série. Je veux exécuter les modèles sur les GPU en parallèle. – empty

+0

L'exemple forward propage 8 modèles sur 8 gpus en parallèle, puis additionne leurs pertes –

+0

Je ne vois pas de multithreading ici. Où se manifeste le parallélisme? – empty