如何在keras中使用特定的GPU进行多GPU训练?

时间:2019-05-26 18:49:13

标签: keras multi-gpu

我有一台带有4个GPU的服务器。我想使用其中的2个进行多GPU训练。

here 提供的Keras文档提供了有关如何使用多个GPU的一些见解,但是我想选择特定的GPU。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

      @Override
                public void onClick(View v) {
                    final String usuario = usuarioT.getText().toString();
                    final String clave   = claveT.getText().toString();    Response.Listener<String> respuesta = new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            try{
                                JSONObject jsonRespuesta = new      JSONObject(response);
              boolean ok = jsonRespuesta.getBoolean("success");
                                if (ok == true){
                  String nombre = jsonRespuesta.getString("Name");
                  String correo = jsonRespuesta.getString("Email");
            Intent bienvenido = new Intent(Login.this, Bienvenido.class);
       bienvenido.putExtra("Nombre",nombre);
                   bienvenido.putExtra("correo", correo);
         Login.this.startActivity(bienvenido);
                        }else{
        AlertDialog.Builder alerta = new AlertDialog.Builder(Login.this);
      alerta.setMessage("Fallo Login").setNegativeButton("Reintentar", null)
                                            .create()
                                            .show();
                                }
                            } catch (JSONException e){
                                e.getMessage();
                            }
                        }
                    };
                    LoginRequest r = new LoginRequest(usuario,clave,respuesta);
                    RequestQueue cola = Volley.newRequestQueue(Login.this);
                    cola.add(r);
                }
            });

我认为这应该有效。您应该拥有要使用的GPU设备的数量(索引)。在这种情况下,其为2和3。相关链接1)https://github.com/carla-simulator/carla/issues/116
2)https://www.tensorflow.org/guide/using_gpu#using_multiple_gpus

答案 1 :(得分:0)

最好的方法是通过在策略范围内创建和编译模型来用tf.distribute Strategy编译Keras模型。例如:

import contextlib

def model_scope(devices):
    if 1 < len(devices):
        strategy = tf.distribute.MirroredStrategy(devices)
        scope = strategy.scope()
    else:
        scope = contextlib.supress() # Python 3.4 up
    return scope

devices = ['/device:GPU:2', '/device:GPU:3']

with model_scope(devices):
    # create and compile your model
    model = get_model()
    model.compile(optimizer=optimizer, loss=loss)