tabtoyou/KoLLaVA

KoLLaVA 학습시 오류

kittyLunar opened this issue · 8 comments

안녕하세요
아직 AI 초보라 쉽게 해결할 수 있는 문제일수도 있는데
여기저기 구글링을 해봐도 쉽게 답이 나오지 않아 문의 드립니다.

제가 준비한 데이터로 학습을 시키려고
sh scripts/pretrain_lightning.sh v0

를 했더니

Traceback (most recent call last):
File "/home/test/.local/bin/torchrun", line 5, in
from torch.distributed.run import main
File "/home/test/.conda/envs/kollava/lib/python3.10/site-packages/torch/init.py", line 443, in
raise ImportError(textwrap.dedent('''
ImportError: Failed to load PyTorch C extensions:
It appears that PyTorch has loaded the torch/_C folder
of the PyTorch repository rather than the C extensions which
are expected in the torch._C namespace. This can occur when
using the install workflow. e.g.
$ python setup.py install && python -c "import torch"
This error can generally be solved using the develop workflow
$ python setup.py develop && python -c "import torch" # This should succeed
or by running Python from a different directory.

오류가 발생했습니다.

해당 오류 발생 전, llava 모듈을 못찾거나 einops 모듈을 못찾는 등의 오류는
해결을 했으나 해당 오류에서 지금 막혀 아직 학습을 진행하지 못하고 있습니다.

혹시 프로젝트를 진행하시면서 저런 오류는 보신적 없으신지
해결 방안이 있다면 알려주시면 감사하겠습니다

그리고
./checkpoints/kollava-lightning-7b-pretrain/pytorch_model.bin.index.json 파일이 필요해 보이는데
이건 학습 진행중에 생성이 되는 파일인건지요? 배포된 소스에는 해당 json이 보이지 않아서요

./checkpoints/kollava-lightning-7b-pretrain/pytorch_model.bin 이 파일은 학습 이후 생성이 될 것 같습니다만....

위의 오류를 수정할 수 있는 방안이 있다면 안내 부탁 드리겠습니다. 감사합니다.

이런 좋은 모델을 통해 많은 인사이트를 주심에 감사드립니다!

안녕하세요, 우선 프로젝트에 관심가져주셔서 감사합니다!

아쉽게도 저는 처음보는 에러네요😢
혹시 conda 가상환경을 통해 작업을 진행중이실까요?
readme.md에 적어둔 package 설치가 잘 되었는지 확인해보면 좋을 것 같습니다.

./checkpoints/kollava-lightning-7b-pretrain/pytorch_model.bin.index.json 파일이 finetune을 위해 필요하신 것 같은데, 해당 파일은 pretrain을 완료하면 자동으로 생성됩니다. finetune까지 완료된 pytorch_model.bin.index.json 파일은 허깅페이스의 tabtoyou/KoLLaVA-KoVicuna-7b에 올려져 있습니다.

네 conda 가상환경 맞습니다.
README.md 에 있는 스텝들 그대로 따라하였고
해당 파일에 있는 모든 패키지는 다 설치가 되어 있습니다.

readme.md 에 있는 학습 과정을 그대로 따라 하다 보면

sh scripts/pretrain_lightning.sh v0 실행 후 나타나는 첫 오류가
ModuleNotFoundError: No module named 'llava' 입니다.
이부분은, PYTHONPATH 설정을
sh scripts/pretrain_lightning.sh v0 를 실행하는 경로로 설정하여 해결 하였고

그 후 나타나는 오류는
'File "/home/test/KoLLaVA/llava/model/mpt/attention.py", line 7, in <module> from einops import rearrange ModuleNotFoundErrorModuleNotFoundError: : No module named 'einops'No module named 'einops'

이 오류인데요
conda list | grep einops
einops 0.6.1 pypi_0 pypi

pip list | grep einops
einops 0.6.1

이렇게 설치가 되어 있는데도 못찾길래..

정상적인 해결방법은 아닌 것 같지만..
PYTHONPATH에 /home/test/.conda/envs/kollava/lib/python3.10/site-packages
입력 해 주면 einops 모듈을 못 찾는 오류는 해결이 됩니다.

그 이후에 나타나는 오류가 원 질문 드렸던 pytorch C 오류인데요..

아마, einops 오류를 정상적으로 해결을 한다면 나타나지 않을 수 도 있겠네요..

혹시 einops 모듈 못찾는 오류는 보신적 없으실까요..?

음.. 확인을 위해 vast.ai에서 A100 GPU를 새로 대여해 돌려봤는데요.
저는 README.md에 있는 방법대로 했을 때, 말씀하신 에러들 없이 잘 돌아가네요..!
스크린샷 2023-07-23 오전 1 16 21

혹시 GPU는 어떤걸 사용하고 계실까요?

흠... 이상하군요.. 저도 동일하게 README.md 에 있는거 그대로 했는데,
위에서 언급한대로 PYTHONPATH 를 설정하지 않으면 llava 모듈부터 못찾는 오류가 발생하는데요

아래는 발생하는 오류중 처음 일부입니다.
(kollava) test@gpusvr:~/KoLLaVA$ sh scripts/pretrain_lightning.sh v0

WARNING:torch.distributed.run:


Setting OMP_NUM_THREADS environment variable for each process to be 1 in default, to avoid your system being overloaded, please further tune the variable for optimal performance in your application as needed.


Traceback (most recent call last):
File "llava/train/train_mem.py", line 6, in
from llava.train.llama_flash_attn_monkey_patch import replace_llama_attn_with_flash_attn
ModuleNotFoundError: No module named 'llava'
Traceback (most recent call last):
File "llava/train/train_mem.py", line 6, in
from llava.train.llama_flash_attn_monkey_patch import replace_llama_attn_with_flash_attn
ModuleNotFoundError: No module named 'llava'
Traceback (most recent call last):
File "llava/train/train_mem.py", line 6, in
from llava.train.llama_flash_attn_monkey_patch import replace_llama_attn_with_flash_attn
ModuleNotFoundError: No module named 'llava'
Traceback (most recent call last):
File "llava/train/train_mem.py", line 6, in
from llava.train.llama_flash_attn_monkey_patch import replace_llama_attn_with_flash_attn
ModuleNotFoundError: No module named 'llava'`

제 오류가 엄청 길게 떠서 전체 로그를 업로드 하고 싶은데... 무슨 일인지 모르겠으나.
Github에 파일 업로드가 안되네요..
이런저런 방법을 다 써봐도
Something went really wrong, and we can't process that file. Try again. 만 수십번째 보고 있네요..

그리고 저도 A100 GPU(6장) 사용 중입니다 ㅠㅠ

서버에 설치된 패키지등의 문제일것 같네요..
conda 가상환경으로 분리를 해도.. 영향을 미치는게 있을거 같군요..

혹시. 괜찮으시다면
저렇게 정상적으로 학습이 되는 상황에서의
PYTHONPATH 가 어떻게 설정 되어 있는 지
확인 요청을 드려도 될까요?

앗 수십번 시도하셨다니.. 너무 고생하셨네요..ㅠㅠ
vast.ai는 gpu 대여 시 비용이 나가서, 학습이 잘 돌아가는 걸 확인하고 지워버렸습니다..ㅠ

음.. 아니면 최근에 KoLLaVA의 base 모델인 LLaVA의 코드가 업데이트 되었습니다.

저도 최대한 시간이 될 때 KoLLaVA에 반영할 생각이지만,
급하시다면 해당 LLaVA repo를 다운받아 영어버전이 잘 돌아가는 지 확인하셔도 좋을 것 같아요.

그 뒤에 한국어 버전으로 converting 하는 것도 kittyLunar님께 많은 배움이 될 것 같습니다.

말씀하신 PYTHONPATH도 추후에 확인하게 되면 바로 답변 남겨놓겠습니다.
많은 관심 보내주셨는데, 큰 도움을 못드린 것 같아 안타까운 마음이 많이 드네요ㅠ

저의 경우 pythonpath는 /opt/conda/envs/kollava/bin/python 로 설정되어 있네요.

llava 업데이트된 코드를 다운로드 받아
clean install 이후에도 동일한 오류가 발생을 하네요.

파이썬이 인스톨된 모듈을 찾는 방법이나
디펜던시 체크 등을 어떻게 하는지 그런 기본적인 동작 방법등에 대해 확인이 필요할것 같습니다 ㅠ

혹시 이를 위한 가이드나 참고할만한 사항이 있다면
알려주시면 감사하겠습니다.

vast.ai 로 클라우드 GPU를 대여할 때 docker image를 설정해야하는데요.
readme에도 적어놓았듯이 pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel 를 사용했습니다. 이것부터 확인하면 좋을 것 같네요.

  1. cuda 버전 확인
    터미널에서 nvcc -V 실행
    아래 이미지 같이 cuda가 11.7로 잘 출력되는지 확인
image
  1. torch 버전 확인
    터미널에서 아래 명령어 실행
python
import torch
print(torch.__version__)

아래 이미지와 같이 torch 버전 출력되는지 확인
image

위의 버전이 맞으면 pip install -e .으로 미리 지정해놓은 라이브러리를 설치하기 때문에 문제없이 잘 돌아갈 것 같습니다. 혹시 문제가 계속 발생한다면 gxq9106@gmail.com으로 메일 주세요.