ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 윈도우(Windows10-64bit) 환경에서 LLaMA(LLaMA-30b 4bit mode) 테스트하기<모델 로드까지>
    Dev LLM 2023. 3. 17. 21:36

    며칠 전 리눅스에서 LLaMA-7B를 테스트해보고 이제는 로컬에서도 거대인공지능을 다룰 수 있다는 것을 알았다.

     

     

    현재는 RTX3090을 쓸 수 있는 상황인데, 놀랍게도 GPTQ를 이용하면 메인스트림급으로 사용하는 RTX1660부터 LLaMA를 사용할 수 있다는 것을 알게 되었다. GPTQ는 GPTQ: Accurate Post-training Compression for Generative Pretrained Transformers란 논문 제목을 가지는데, GPT모델을 2/3/4비트로 압축하여 경량화하는 기술이다. 서핑하다 찾은 블로그의 표를 보면 RTX3090에서 기본 모델은 LLaMa-7b를 겨우 돌리나, GPTQ를 활용하면 더 좋은 성능의 LLaMa-30b까지 가능하다고 합니다.

    참조 https://blog.naver.com/carrier00/223042971354

     

    Windows10-64bit에서 GPTQ를 활용한 LLaMa-30b(4bit mode) 테스트 과정을 정리합니다~

     

    주요과정

    1. 아나콘다 설치

    2. 관련 종속프로그램 설치

    3. 가상환경 구성

    4. 파이토치, 쿠다환경구성

    5. text-generation-webui 설치

    6. GPTQ-for-LLaMa 설치

    7. huggingface버전 model 다운로드

    8. text-generation-webui 실행

     

     

    세부과정

    1. 아나콘다 설치 : 윈도우환경 Anaconda(아나콘다) 설치하기 같은 블로그를 참고하세요~

    *설치 중 내 가상환경 환경변수 등록 체크하기, 안하심 아래 파이썬 실행 에러를 해결하면서 환경구성에 대해 좀 더 알게 되실 겁니다~

     

    2. Visual Studio 2019 빌드 도구 다운로드 및 설치

    최신 BuildTools 링크를 클릭하고 설치할 때, ++를 사용한 데스크탑 개발 환경을 선택

    https://learn.microsoft.com/en-us/visualstudio/releases/2019/history#release-dates-and-build-numbers

     

    Visual Studio 2019 build numbers and release dates

    A list of released versions, build numbers, and release links for Visual Studio 2019.

    learn.microsoft.com

     

    (제일 아래 부분에 에러가 뜨는 데 위 옵션과 관련된 것일지 모르겠다)

     

    3. 가상환경 구성

    윈도우버튼 - 아나콘다 - 아나콘다 파워쉘(관리자 권한으로..maybe)

    실행된 터미널에서 아나콘다를 활용해 가상환경을 만드는 명령은 $conda create -n (가상환경명) 이다. 뒤에 파이썬 버전을 붙이면 그 버전 파이썬이 설치된 가상환경이 만들어진다. 오픈소스로 움직이는 리눅스 생태계 특성상 딥러닝 환경을 구성할 때 다양한 에러가 생기는데 이것을 가상환경을 새로 만듦으로 깔끔히 해결할 수 있다.

     

    $conda create -n llamaW python==3.10

    파이썬 3.10을 설치한 가상환경생성

    $conda activate llamaW

    진입

     

    $python

    파이썬 버전확인, 파이썬 실행 안될시 아나콘다 환경변수 에러해결참고 https://coding-kindergarten.tistory.com/152   굿!!

     

     

    $conda install cuda pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia/label/cuda-11.7.0

    쿠다, 파이토치와 관련 라이브러리 설치하기

    시간도 걸리고 굉장히 많은 것들이 설치되는 모습을 캡쳐하고 싶었으나 어느덧 끝나고 정리된 프롬프트만..

     

     

    $python

    파이썬 실행, 3.10버전 확인()

    $import torch; print(torch.cuda.is_available())

    파이토치를 불러와 쿠다를 사용할 수 있는지 물었고 True

    $exit()

    파이썬 종료

    $pip install git

    깃허브 레포지토리 다운을 위한 git 설치

     

    $git clone https://github.com/oobabooga/text-generation-webui.git

    깃을 이용해 text-generation-webui 다운 설치

    $cd .\text-generation-webui\

     

    $mkdir repositories

    repositories란 디렉토리(폴더) 만듦

     

    $cd .\repositories\

    repositories 디렉토리로 이동

     

    $git clone https://github.com/qwopqwop200/GPTQ-for-LLaMa.git

     

    GitHub - qwopqwop200/GPTQ-for-LLaMa: 4 bits quantization of LLaMa using GPTQ

    4 bits quantization of LLaMa using GPTQ. Contribute to qwopqwop200/GPTQ-for-LLaMa development by creating an account on GitHub.

    github.com

    $cd GPTQ-for-LLaMa

     

    $pip install ninja

     

    $python setup_cuda.py install

     

    캡쳐하고 보니 아래에 에러가 떠있음. 워닝은 치명적인 문제가 아닌 경우가 많다는...

     

    $cd ../..

     

    $pip install -r requirements.txt

    requirements.txt속 라이브러리 일괄 설치

     

    $python download-model.py decapoda-research/llama-13b-hf

    허깅페이스에서 llama-13b모델 다운(37.2기가바이트)

    C드라이브 용량 부족으로 D로 옮겨 재도전 

     

    $python download-model.py decapoda-research/llama-30b-hf

    바로 이어서 llama-30b 모델도 다운

     

    $python .\server.py --cai-chat --load-in-4bit --model llama-13b --no-stream

    실행하니 에러를 뿜는다. 머지.. 중간에 가상환경을 다시 만들었는디~ 일단 30b모델 다운받고 이어 쓰겠다.

    MS의 통합개발환경(IDE) 비주얼스튜디오에 대한 에러가 있는 것 같다.

    <1차 작성이 여기까지,,, 30b모델 로드한 지금보니 쿠다툴킷, 쿠다라이브러리 설치 안해서 이럼>

     

     

     

     

     

     

     

     

     

     

     

     

    파이토치 다시 설치

     

     

    결국 새 환경 만듦

    오픈소스는 역시 버전이 중요하다

    토치2.0  쿠다 11.7    

    관련 종속라이브러리 설치

    $pip install gradio

    $pip install markdown

    $pip install transformers

    $pip install accelerate

    $pip install peft

     

    (llama2) PS D:\Projects\text-generation-webui> python .\server.py --load-in-4bit
    Warning: --load-in-4bit is deprecated and will be removed. Use --gptq-bits 4 instead.

    Loading llama-30b-hf...
    CUDA extension not installed.
    Traceback (most recent call last):
      File "D:\Projects\text-generation-webui\server.py", line 236, in <module>
        shared.model, shared.tokenizer = load_model(shared.model_name)
      File "D:\Projects\text-generation-webui\modules\models.py", line 95, in load_model
        model = load_quantized(model_name)
      File "D:\Projects\text-generation-webui\modules\GPTQ_loader.py", line 55, in load_quantized
        model = load_quant(str(path_to_model), str(pt_path), shared.args.gptq_bits)
      File "D:\Projects\text-generation-webui\repositories\GPTQ-for-LLaMa\llama.py", line 220, in load_quant
        from transformers import LlamaConfig, LlamaForCausalLM
    ImportError: cannot import name 'LlamaConfig' from 'transformers' (C:\ProgramData\Anaconda3\envs\llama2\lib\site-packages\transformers\__init__.py)

     

     

     

    여기에서 파이토치 버전이 1.13.1 cpu버전으로 바뀐다

     

     

    New ENV

    pytorch버전을 1.13.1로 정하고 설치

    빙고!! 

     

     

    GPTQ 셋업 에러(아마 호환 버전에 따른) 후 없다는 라이브러리 설치

     

    (llama) PS D:\Projects\text-generation-webui> python .\server.py --load-in-4bit
    Warning: --load-in-4bit is deprecated and will be removed. Use --gptq-bits 4 instead.

    Traceback (most recent call last):
      File "D:\Projects\text-generation-webui\server.py", line 13, in <module>
        import modules.chat as chat
      File "D:\Projects\text-generation-webui\modules\chat.py", line 15, in <module>
        from modules.text_generation import (encode, generate_reply,
      File "D:\Projects\text-generation-webui\modules\text_generation.py", line 14, in <module>
        from modules.models import local_rank
      File "D:\Projects\text-generation-webui\modules\models.py", line 11, in <module>
        from transformers import (AutoConfig, AutoModelForCausalLM, AutoTokenizer,
    ImportError: cannot import name 'BitsAndBytesConfig' from 'transformers' (C:\ProgramData\Anaconda3\envs\llama\lib\site-packages\transformers\__init__.py)
    (llama) PS D:\Projects\text-generation-webui>

     

     

    pip install transformers==4.21.2 해결 안됨

     

     

    구글링하다 허깅페이스서 트랜스포머 설치 

    pip install git+https://github.com/huggingface/transformers

    https://stackoverflow.com/questions/75563949/huggingface-transformers-cannot-import-bitsandbytesconfig-from-transformers

     

     

     

    성공하는 줄 알았으나, 에러

    힌트 획득!!

    안녕@candowu, 이 문제를 제기해 주셔서 감사합니다. 이는 허브의 구성에서tokenizer  를 가리키기 때문에 발생합니다 . 그러나 라이브러리의 토크나이저는 .LLaMATokenizerLlamaTokenizer

    이는 최종 PR이 병합되기 전에 구성 파일이 생성되었기 때문일 수 있습니다.

    tokenizer_config.json의 LLaMATokenizer를 소문자 LlamaTokenizer 로 변경하면 매력처럼 작동합니다.

     

     

     

    13b모델 성공

     

     

    30b모델 로드

     

    질문에 알맞는 답을 생성하려는데 에러가 난다. 다시금 생각하니 기본 중의 기본을 안했구나..

    삽질은 일단 여기까지 하고~

    여유가 생기면 쿠다 툴킷과 cuDNN 라이브러리를 설치하고 결과를 올리겠다. 모든 분 즐거운 개발하십시오!!

     

     

     

     

     

     

     

    참고

    https://gist.github.com/lxe/82eb87db25fdb75b92fa18a6d494ee3c

    'Dev LLM' 카테고리의 다른 글

    Ubuntu에서 CUDA toolkit 버전 변경 & gcc  (0) 2023.06.10
    "We Have No Moat, And Neither Does OpenAI"  (0) 2023.05.28

    댓글

Designed by Tistory.