-
Notifications
You must be signed in to change notification settings - Fork 277
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于工业级生产tfrecord的疑问,希望作者帮我解惑 #14
Comments
抱歉,刚看到,tfrecord本身存在一些缺陷,低层采用pb,解析速度较慢,而且工业界分布式hadoop/spark生成tfrecord,int型只提供int64,所以可能tfrecord样本比原始csv样本还大很多,占用存储空间, 由于推荐模型本身网络比较简单,再加上tfrecord格式解析慢,可能用GPU训练并不比cpu快多少。 你这个相差这么多,感觉应该不至于,你检查看看应该是其他什么问题导致的,另外,你可以看看tensorflow的dataset API, 有一些参数可以调调,比如sloppy参数设为true等等。 |
谢谢作者回复,我现在优化过后的tfrecord读取速度是200-300ms,相比也还是慢点,能接受,我再认真研读一下dataset的api |
@TzeSing 要注意map的位置,放的不对会非常慢 |
我是batch后map(tf.io.parse_example)的 |
一般做法是用spark生成tfrecord再拉到本地GPU跑,但是如果CTR数据集如果小的话(2000W条以下,50个特征以下),能读进内存里,发现用tf.data.TFRecordDataset反而很慢。
本人用pandas读进内存再用tf.keras.utils.sequence构造数据生成器,大概只需要20ms/step
但用tf.data.TFRecordDataset就上升到了2s/step
总共21个step每个epoch
不知道作者是否有些建议给我,指点迷津。
例如生成tfrecord的内部格式是如何的,我现在是一个record有n个特征(key)
等等的建议,谢谢作者
The text was updated successfully, but these errors were encountered: