Skip to content
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

[HW2 공지] CPU로 학습 시 Parallax branch 설정, 뼈대 코드 수정 #19

Open
gyeongin opened this issue Nov 24, 2018 · 0 comments

Comments

@gyeongin
Copy link
Contributor

기존 HW document와 실습 시간에 빠뜨린 설명이 있어 보충합니다.

  1. CPU만 이용해 학습하실 경우, Parallax master branch를 이용하시지 말고 cpu_enable branch를 이용해 주시기 바랍니다.
    현재 master branch는 GPU를 사용하는 것을 가정하고 있기에, CPU로만 학습하실 경우 몇 가지 minor한 problem이 발생할 수 있습니다.

  2. 뼈대 코드를 수정했습니다. 다시 다운로드 받아주세요!
    2.1. run_horovod.py에서 처음에 parameter들을 broadcast해 sync하는 부분이 빠져있어 추가했습니다.
    2.2. run_tf.py에서 synchronous training을 하도록 tf.train.SyncReplicaOptimizer를 추가했습니다. 사실 이렇게 바뀐 현재 코드의 execution도 Horovod / Parallax와는 미묘하게 다릅니다. 이는 SyncReplicaOptimizer의 특성 때문이며, 과제 수행 하실 때 vanilla TF (PS architecture) 코드를 SyncReplicaOptimizer를 이용해서 짜시면 Horovod / Parallax과 동일한 result가 나올 수 없습니다. 왜 다르게 나오는지를 report에 분석해 주셔도 좋고, 다른 방법을 이용해 (hint: tf.FIFOQueue & tf.ConditionalAccumulator) Horovod / Parallax와 동일한 result가 나오도록 코드를 짜 주셔도 좋습니다. Result가 다르게 나오는 이유에 대한 힌트는 TF OSDI paper의 Section 4.4에 있습니다.
    2.3. Deterministic한 execution을 할 수 있도록 model 정의를 수정하였고 input data shuffle을 disable 하였습니다.
    2.4. 각 script를 수행하기 위한 example command와, 수행 결과 생성된 chekpoint file을 examine 할 수 있는 command를 주석의 형태로 추가하였습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant