我有一台带有4个GPU的服务器。我想使用其中的2个进行多GPU训练。
here 提供的Keras文档提供了有关如何使用多个GPU的一些见解,但是我想选择特定的GPU。有没有办法做到这一点?
答案 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)