怎么降低列表级别(提高列表级别和降低列表级别)
574
2022-05-28
当程序代码中发现与华为云OBS互联出现功能问题或者是出现性能低问题时,可以借助MoXing的接口去规避。
以一个客户案例来说明,用户代码大致如下:
import tensorflow as tf ... summary_writer = tf.summary.FileWriter('obs://bucket/train_url/') with tf.train.MonitoredTrainingSession() as sess: for step in range(10000): if step % log_step == 0: _, summary = sess.run([train_op, summary_op]) summary_writer.add_summary(summary, step) else: sess.run(train_op)
上述代码的作用是每隔log_step,追加一些summary到OBS。用户的summary非常大,可能会到4GB以上,这里使用了TensorFlow直接连接OBS,并且不停的往OBS上的一个大文件追加写,性能会越来越慢。
解决思路:将一个summary大文件分片成多个小文件,每次追加的时候保证原始文件不会太大,并且直接保存到本地,定期利用mox接口上传到OBS
解决思路:将一个summary大文件分片成多个小文件,每次追加的时候保证原始文件不会太大,并且直接保存到本地,定期利用mox接口上传到OBS
参考代码:
import tensorflow as tf import moxing as mox ... # 先保存到本地summary_writer = tf.summary.FileWriter('/cache/local_summary/') with tf.train.MonitoredTrainingSession() as sess: for step in range(10000): if step % log_step == 0: _, summary = sess.run([train_op, summary_op]) summary_writer.add_summary(summary, step) else: sess.run(train_op) # 每隔1000个step,把summary强制写到磁盘,并且重新创建一个新的writer,强制移动到下一个文件分片 # 在此场景中,一共10000步,假设log_step为100 # 相当于每隔100步保存一次summary到本地,每隔1000步将summary写回磁盘,然后上传到OBS # 并且新建一个文件继续记录接下来的summary。也就是说最后会有10个events文件来保存summary if step % 1000 == 0: summary_writer.flush() summary_writer.close() mox.file.sync_copy('/cache/local_summary/', 'obs://bucket/train_url/') summary_writer = tf.summary.FileWriter('/cache/local_summary/') # 最后上传遗留的所有文件 summary_writer.flush() summary_writer.close() mox.file.sync_copy('/cache/local_summary/', 'obs://bucket/train_url/')
OBS ModelArts
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。