CUDA error: device-side assert triggered

#1
by gihong99 - opened
This comment has been hidden

지금 상황에서 유추를 해보면 해당 모데을 inference하기 위한 requirments.txt를 보내니 다시 설치해보시고 추론 해보면 좋을것 같네요..

[requirements_mistral.txt](transformers
bitsandbytes
git+https://github.com/huggingface/transformers.git
git+https://github.com/huggingface/peft.git
git+https://github.com/huggingface/accelerate.git
trl
xformers
wandb
datasets
einops
sentencepiece
scipy

위와 같이 했는데도 안되면 nvidia-smi 결과와 실행 코드와 전체로그가 보내주면 제가 좀더 쉽게 파악할수 있을것 같습니다.

$ nvidia-smi
Thu Nov 30 14:18:42 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.86.10              Driver Version: 535.86.10    CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 4090        Off | 00000000:0F:00.0 Off |                  Off |
| 34%   48C    P8              21W / 450W |   6928MiB / 24564MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      2023      G   /usr/lib/xorg/Xorg                            4MiB |
+---------------------------------------------------------------------------------------+

$ mistral_dpo_example.py
..
This comment has been hidden

저같은 경우에는 일반적으로 아래와 같이 CUDA_VISIBLE_DEVICES를 설정하는 방법으로 추론을 하고 있습니다.
아래 코드를 참고해서 적용해보세요.

import os
import torch

os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = "0" # Set the GPU 2 to use

print(f"Using GPU is CUDA:{os.environ['CUDA_VISIBLE_DEVICES']}")
This comment has been hidden

저는 추론할때는 CUDA_VISIBLE_DEVICES를 하나만 사용하고 있습니다. peft multi gpu는 얼마전까지도 이슈가 있었고 된다 하더라도 속도가 향상되지는 않았던것으로 기억합니다.

  1. os.environ["CUDA_VISIBLE_DEVICES"] = "0"과 device_map은 'auto'로 설정했을 때도 문제가 발생하나요?
  2. multi-gpu를 사용하는 이유가 속도때문인가요?

친절한 답변 감사합니다 !

  1. 문제가 발생하지 않았습니다.
  2. komt-mistral-7b-v1은 BitsAndBytesConfig를 활용하지 않았을 경우에 메모리 부족 현상을 경험 했기 때문에 추후 더 큰 모델이 나올 경우 또한 multi-gpu를 해야한다고 생각해서 시도 중 이였습니다 !

그럼 BitsAndBytesConfig를 사용할 경우 모델의 추론 결과에 어느 정도 영향을 주는지 경험적으로 알 수 있을까요 ?

글쎄요.. komt-mistral-7b-v1 모델을 BitsAndBytesConfig로 읽어오는 경우 추론이 상당히 나쁜것으로 알고 있습니다.
komt-mistral-7b-v1-lora모델이나 komt-mistral-7b-v1-dpo 모델을 BitsAndBytesConfig로 사용해야합니다.
큰모델을 여러 gpu에 layer별로 올리는것은 안되는것으로 알고 있습니다. 따라서 한개의 gpu가 넘는 모델은 여러개 모델이 있다고 하더라도 올라갈수 없습니다.

Sign up or log in to comment