- টেনসরফ্লো এর জন্য:
টেনসরফ্লো জিপিইউ ব্যবহার করে
কীভাবে ব্যবহৃত হয় সে সম্পর্কে এখানে নমুনা কোড দেওয়া হয়েছে, সুতরাং প্রতিটি কাজের জন্য ডিভাইস / ডিভাইস সহ তালিকাটি নির্দিষ্ট করা হয়েছে:
# Creates a graph.
c = []
for d in ['/gpu:2', '/gpu:3']:
with tf.device(d):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3])
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2])
c.append(tf.matmul(a, b))
with tf.device('/cpu:0'):
sum = tf.add_n(c)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(sum))
tf সিপিইউর জন্য উপস্থিত থাকলেও জিপিইউ ডিফল্টরূপে জিপিইউ ব্যবহার করবে (যদি উপস্থিত জিপিইউ সমর্থিত থাকে)। সুতরাং আপনি কেবল লুপের জন্য একটি করতে পারেন: "ডি এর জন্য ['/ জিপিইউ: 1', '/ জিপিইউ: 2', '/ জিপিইউ: 3' ... '' / জিপিইউ: 8 ',]:" এবং "tf.device (d)" এ আপনার সমস্ত উদাহরণ জিপিইউ সংস্থান অন্তর্ভুক্ত করা উচিত। সুতরাং tf.device () আসলে ব্যবহৃত হবে।
একাধিক জিপিইউতে স্কেলিং কেরাস মডেল প্রশিক্ষণ
- Keras
আরগস.নাম_জিপাসের চেয়ে এমএক্সনেট ব্যবহার করে কেরাসের জন্য , যেখানে num_gpus আপনার প্রয়োজনীয় জিপিইউগুলির তালিকা।
def backend_agnostic_compile(model, loss, optimizer, metrics, args):
if keras.backend._backend == 'mxnet':
gpu_list = ["gpu(%d)" % i for i in range(args.num_gpus)]
model.compile(loss=loss,
optimizer=optimizer,
metrics=metrics,
context = gpu_list)
else:
if args.num_gpus > 1:
print("Warning: num_gpus > 1 but not using MxNet backend")
model.compile(loss=loss,
optimizer=optimizer,
metrics=metrics)
- horovod.tensorflow
সমস্ত উবারের শীর্ষে হোরভোডকে সম্প্রতি খোলা হয়েছে এবং আমি মনে করি দুর্দান্ত:
Horovod
import tensorflow as tf
import horovod.tensorflow as hvd
# Initialize Horovod
hvd.init()
# Pin GPU to be used to process local rank (one GPU per process)
config = tf.ConfigProto()
config.gpu_options.visible_device_list = str(hvd.local_rank())
# Build model…
loss = …
opt = tf.train.AdagradOptimizer(0.01)
# Add Horovod Distributed Optimizer
opt = hvd.DistributedOptimizer(opt)
# Add hook to broadcast variables from rank 0 to all other processes during
# initialization.
hooks = [hvd.BroadcastGlobalVariablesHook(0)]
# Make training operation
train_op = opt.minimize(loss)
# The MonitoredTrainingSession takes care of session initialization,
# restoring from a checkpoint, saving to a checkpoint, and closing when done
# or an error occurs.
with tf.train.MonitoredTrainingSession(checkpoint_dir=“/tmp/train_logs”,
config=config,
hooks=hooks) as mon_sess:
while not mon_sess.should_stop():
# Perform synchronous training.
mon_sess.run(train_op)