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가 넘는 모델은 여러개 모델이 있다고 하더라도 올라갈수 없습니다.

gihong99 changed discussion status to closed

Sign up or log in to comment