기술나눔

이상한 오류 로그

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

https://github.com/meta-llama/llama3/issues/80

모델을 읽는 데에는 문제가 없지만 추론 중에 다음과 같은 내용이 나타납니다.
RuntimeError: "triu_tril_cuda_template"가 'BFloat16'에 대해 구현되지 않았습니다.

————————————————

사건의 원인

변환기의 자동 프로세서를 이해하려고 하면 다음과 같은 메시지가 나타납니다.
RuntimeError: 다음 오류로 인해 transformers.models.auto.processing_auto를 가져오는 데 실패했습니다(추적을 확인하려면 위를 참조하세요):
PyTorch와 torchvision이 다른 CUDA 버전으로 컴파일된 것을 감지했습니다. PyTorch는 CUDA 버전=11.8이고 torchvision은 CUDA 버전=11.7입니다. PyTorch 설치와 일치하는 torchvision을 다시 설치하세요.
내 토치와 토치비전의 CUDA 버전이 호환되지 않는다는 말씀이신가요? 원래는 Pytorch로 설치했습니다. . .

내 토치 버전은 다음과 같습니다.
토치 2.0.0+cu118
토치오디오 2.0.1
토치비전 0.15.1

매우 이상하게도 두 단어 뒤에는 cu118이라는 단어가 없습니다. 그래서 pytorch 공식 웹사이트에 가서 다시 다운로드했습니다.
pip 설치 토치2.0.0 토치비전0.15.1 토치오디오==2.0.1 --인덱스-url https://download.pytorch.org/whl/cu118

바로 이번에요. torchvision만 제거했기 때문에 torchaudio가 업데이트되지 않았습니다.
토치 2.0.0+cu118
토치오디오 2.0.1
토치비전 0.15.1+cu118

이때 첫 번째 오류가 발생했습니다.

————————

임시 구제

내가 읽고 있는 것은 qwen1.5 7B입니다. torch_dtype=torch.bfloat16을 설정하세요. bfloat16을 torch_dtype=torch.float16으로 변경한 후 추론할 수 있습니다. 아니면 토치비전을 일반 버전으로 되돌리세요.
그러나 torch.float16과 torch.bfloat16은 완전히 다른 두 가지이므로 단순히 변경하는 것은 잘못된 것입니다. . .

——————————————

최선의 치료법

torch_dtype="auto"를 사용하면 변환기는 자동으로 bfloat16을 사용합니다.
또한 다른 조건에서 model.config를 인쇄하면서 몇 가지 관찰을 했습니다.

  1. Autoconfig를 사용하여 qwen과 함께 제공되는 구성 파일을 사용하고 이를 AutoModelForCausalLM.from_pertrained로 보냈습니다. bfloat16이 사용되었지만 실제로는 float32 공간이 소비되는 것으로 나타났습니다.
  2. 16개의 공간을 사용하고 float16을 표시하는 torch_dtype=torch.float16을 설정합니다.
  3. 16개의 공간을 소비하고 bfloat16을 표시하는 torch_dtype="auto"를 설정합니다.

아아, 정말 비교가 되네.