ratsgo / embedding

한국어 임베딩 (Sentence Embeddings Using Korean Corpora)
https://ratsgo.github.io/embedding
MIT License
455 stars 130 forks source link

KeyError: "Registering two gradient with name 'NcclAllReduce'! (Previous registration was in register /home/circulus/.local/lib/python3.6/site-packages/tensorflow/python/framework/registry.py:66)" #73

Closed rippertnt closed 4 years ago

rippertnt commented 4 years ago

안녕하세요~ 개발자만의 시각이 아닌 언어학자의 시각에서도 쓰여진 책으로 만나게 되어 반갑습니다. 다름이 아니라, bert 모델 fine tune 을 수행하는데 코드 동작중 다음과 같은 오류가 나는데, 구글링으로도 잘 해결이 되지 않아 혹 아시는 분이 있으실까 하여 올려봅니다.

from tensorflow.contrib import nccl File "/home/circulus/.local/lib/python3.6/site-packages/tensorflow/contrib/nccl/init.py", line 30, in from tensorflow.contrib.nccl.python.ops.nccl_ops import all_max File "/home/circulus/.local/lib/python3.6/site-packages/tensorflow/contrib/nccl/python/ops/nccl_ops.py", line 52, in @ops.RegisterGradient('NcclAllReduce') File "/home/circulus/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 2723, in call _gradient_registry.register(f, self._op_type) File "/home/circulus/.local/lib/python3.6/site-packages/tensorflow/python/framework/registry.py", line 61, in register (self._name, name, function_name, filename, line_number)) KeyError: "Registering two gradient with name 'NcclAllReduce'! (Previous registration was in register /home/circulus/.local/lib/python3.6/site-packages/tensorflow/python/framework/registry.py:66)"

혹시 아시는 분이 계실까요?

ratsgo commented 4 years ago

@rippertnt 님 해당 에러는 nccl 라이브러리 때문에 발생하는 것으로 보입니다. 현재 이 repo가 제공하는 모델 가운데 nccl 라이브러리를 사용하는 모델은 XLNet뿐인데요. BERT를 파인튜닝하고 싶다면 해당 라이브러리 import를 comment out해 에러를 회피하는 것이 좋을 것 같습니다. (해당 코드는 embedding/models/tune_utils.py의 네 번째 줄입니다)

#from tensorflow.contrib import nccl

보다 근본적인 해결은 도서에서 제공하지 않는 XLNet 모델을 코드에서 걷어내거나, 해당 오류를 찾아 고치는 등의 방식일 것 같은데요. 이 부분은 시간을 두고 알아보겠습니다. 다시 한번 관심 가져주셔서 감사드립니다.

rippertnt commented 4 years ago

답장 감사합니다. 해당 부분을 일단 걷어내서 해결했습니다. 다만 resource exhausted 오류가 나는데, 현재 2070 을 쓰고 있습니다. (8gb 버전) 어느 부분을 수정하면 돌릴수 있을지 그게 안된다면 메모리 사이즈가 어느정도 되는 gpu 로 돌려야 할지 궁금합니다.

ratsgo commented 4 years ago

저 같은 경우에는 파인튜닝에 1080ti(11GB)를 사용해 BERT, ELMo 등 도서에 제시된 모든 모델을 학습할 수 있었습니다. 메모리가 좀 더 큰 GPU를 사용하면 좋을 것 같습니다^^: