일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- timeout
- postech인공지능
- 포항공대인공지능
- 대학원준비
- 사전학습
- learning_rate
- torch.distributed
- 포항공대인공지능대학원
- 포스텍 인공지능 대학원
- 파이썬
- 에러노트
- 포스텍 ai
- loss
- 에러
- trainer
- torch_size
- postech
- llm파인튜닝
- postech 인공지능대학원
- Torch
- 포스텍인공지능
- RuntimeError
- 러닝레이트
- DeepSpeed
- llm
- 파인튜닝
- github
- Axotl
- fine_tuning
- 대학원합격
- Today
- Total
DopeorNope 개발일지
llama.cpp로 양자화 하기 GGUF 본문
120b짜리 모델을 굽고 있는 와중, 아 도저히 내 서버로는 감당이 안되는 크기라 양자화를 시도해야 하겠다는 생각이들었다.
(현재 사용하고 있는 서버는 A100 40GB * 8)
그래서 어떻게 llama.cpp로 양자화를 하는지 에러 수정 및 구현 방법을 기술하도록 하겠다.
우선 llama.cpp에서 제공하는 양자화 지원 범위는 다음과 같다.
우선 나는 4bit 양자화에 대해선 약간의 불안감이 있다.
그 이유는, 우선 8bit까지는 어느정도 성능이 괜찮은데, 4bit로 가니 외계어를 밷는 경험을 좀 했기 때문에.. 성능 위주면 8bit를 추천..합네다.
그럼 llama.cpp를 빌드하는 법을 알려줄 수 있도록 하겠다.
필자는 리눅스 기반의 공용서버를 활용하고 있기 때문에, 리눅스 기반으로 설명하겠다.
1. lamma.cpp 깃허브 레포 다운
# 레포 다운
git clone https://github.com/ggerganov/llama.cpp.git
# 다운 폴더로 이동
cd llama.cpp
Tip 만약 본인의 서버에서 git이 없다면
다음과 같이 하면 됨 (거의 초기 설정이라 가정하고 하겠습니당).
# 루트권한 실행하기 위해서
su
# 패키지 다운위해 업데이트
apt-get update
# sudo 패키지 다운
apt-get install sudo
# git 패키지 설치
sudo apt-get install git
2. llama.cpp 빌드하기
여기서는 조금 할 말이 많다. 우선 첫번째, 리눅스 기반은 두가지로 접근할 수 있는게 있는데, 첫번째는 make와 Open Blas로 빌드하는 방법이고 두번째는 cmake로 빌드하는 방법이다.
우선 make로 빌드하는 법을 알려주도록 하겠다.
진짜 간단하다.
make LLAMA_OPENBLAS=1
그런데 여기서 만약 다음과 같은 에러가 발생하는가?
위의 에러는 open blas로 빌드하려는데 관련 패키지가 없기 때문에 생기는 에러고 만약 이 에러면 다음과 같이 실행하면 된다.
sudo apt-get install libopenblas-dev
이렇게 하면 아마 위 에러는 해결 될 수 있다.
그러면 아주 안정적인 빌드가 가능하다.
다만 이후에 또 다른 에러가 발생한다면?
내가 경험한 에러는 다음과 같다.
open-blas의 문제이긴 한데, 직접 패키지 코드를 수정해주면 되는데, 이건 너무 귀찮다.
(왜냐 커맨드 라인으로 하나하나 수정하기는 매우 귀찮고 삑나면 스트레스가 많기 때문에)
그러면, 이럴때는 cmake로 빌드하면 된다.
# build용 디렉토리 생성
mkdir build
# 디렉토리 이동
cd build
# cmake로 빌딩
cmake ..
cmake --build . --config Release
그러면 아마 llama.cpp가 빌딩이 완료 되었다고 뜰 것이다.
사용
이제 양자화를 하기 위해서는 다음과 같이 실행하면 된다.
# 예시용 모델 로컬로 다운
huggingface-cli download upstage/SOLAR-10.7B-v1.0 --local-dir=./SOLAR-10.7B-v1.0
# 모델 변환후 models에 저장
python3 convert.py models/SOLAR-10.7B-v1.0/
#양자화 진행
./quantize ./models/SOLAR-10.7B-v1.0/ggml-model-f16.gguf ./models/SOLAR-10.7B-v1.0/ggml-model-q8_0.gguf q8_0
이제 이지하게 한번 해보시길 바랍니다...
'에러 노트' 카테고리의 다른 글
[Deepspeed]assert len(set(t.dtype for t in tensors)) == 1에러 해결 (1) | 2024.01.15 |
---|---|
Multi-GPU 훈련시 Timeout 문제 해결법 (0) | 2024.01.15 |
[LLM,deepspeed, axotl]LLM 파인튜닝시, loss값이 올라가는 현상 (1) | 2024.01.13 |
Axotl & deepspeed zero3: 모델 레이어 불러올때 torch.Size([0]) 해결법 (1) | 2024.01.13 |
RuntimeError: expected scalar type Half but found Float 에러 해결방법 (0) | 2024.01.02 |