ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • colab 에서 Llama 3 튜닝하기 - 하드웨어 가속기 선택하기
    프로그래밍/기계학습 2025. 3. 13. 16:05
    반응형

     

     

    colab 노트북에서 Llama 3 8B 모델 튜닝을 진행해보겠다.

     

    코드 실행에서 GPU가 필요하기 때문에 노트북을 작성하기 전에 런타임 유형을 설정한다.  

     

    colab 노트북유형

     

     

     

     

     

    하드웨어 옵션 설명

     
     
    Google Colab Pro에서 "런타임 유형 변경" 메뉴에서 선택할 수 있는 하드웨어 옵션은 다음과 같습니다:
    1. CPU:
      • 의미: 중앙처리장치(Central Processing Unit)를 사용.
      • 특징: GPU나 TPU 없이 일반 CPU만으로 연산 수행. 속도가 느리고 대규모 모델 튜닝에는 부적합.
      • 추천 여부: 현재 작업(8B 모델 튜닝)에 비추어 비추천. 메모리와 연산 속도가 부족할 가능성이 큼.
    2. T4 GPU:
      • 의미: NVIDIA T4 그래픽처리장치(Graphics Processing Unit)를 사용.
      • 특징: Colab Pro에서 기본 제공되는 중급 GPU. VRAM은 약 16GB로, 4비트 양자화된 8B 모델을 실행할 수 있지만, 배치 크기나 데이터셋 크기가 크면 메모리 부족 문제가 발생할 수 있음.
      • 추천 여부: 튜닝 가능하나, LoRA와 4비트 양자화를 사용하더라도 성능이 제한적일 수 있음
    3. A100 GPU:
      • 의미: NVIDIA A100 GPU 사용 (Colab Pro+에서 가능).
      • 특징: 고성능 GPU로, VRAM은 40GB 이상 제공. 대규모 모델 튜닝에 적합하며, 8B 모델을 효율적으로 처리할 수 있음. 빠른 학습 속도와 안정적인 메모리 관리 가능.
      • 추천 여부: 튜닝에 가장 적합. 현재 작업의 요구사항(8B 모델, 4비트 양자화, LoRA)에 맞음.
    4. L4 GPU:
      • 의미: NVIDIA L4 GPU 사용 (최신 Colab 옵션 중 하나).
      • 특징: VRAM은 약 24GB로, A100보다는 낮지만 T4보다 우수. 중간 규모 모델 튜닝에 적합하며, 효율적인 에너지 소비가 특징.
      • 추천 여부: A100이 없으면 L4가 좋은 대안. 8B 모델 튜닝에 충분하나, 대규모 데이터셋에는 제한될 수 있음.
    5. v2-8 TPU:
      • 의미: Google의 Tensor Processing Unit 버전 2, 8코어 구성.
      • 특징: TPU는 특정 딥러닝 작업(예: TensorFlow)에 최적화되어 있으며, PyTorch 기반 LLaMA 모델 튜닝에는 호환성이 떨어짐. VRAM 대신 HBM(High Bandwidth Memory) 사용.
      • 추천 여부: 현재 PyTorch 기반 스크립트에 비추천. TPU 지원을 위한 코드 수정 필요.
    6. v5e-1 TPU:
      • 의미: Google의 최신 TPU 버전 중 하나, 1코어 구성.
      • 특징: v2-8 TPU보다 성능이 개선되었으나, 여전히 PyTorch와의 호환성이 낮음.
      • 추천 여부: 비추천. TPU는 현재 작업에 적합하지 않음

     

     


     

    어떤 모델(하드웨어)을 골라야 하나?

    • 추천: A100 GPU
      • 이유:
        • Meta-Llama-3.1-8B-Instruct 모델은 8B 파라미터를 가지며, 4비트 양자화로 약 16-20GB VRAM을 필요로 함.
        • LoRA를 사용하더라도 대규모 데이터셋(미래 확장 시)이나 배치 처리 시 T4 GPU(16GB VRAM)의 메모리 한계에 부딪힐 가능성이 있음.
        • A100 GPU(40GB VRAM)는 안정적인 학습과 빠른 속도를 보장하며, Colab Pro+ 구독 시 접근 가능.
      • 대안: A100이 불가능하다면 L4 GPU(24GB VRAM)를 선택. T4 GPU는 최소한의 튜닝에는 가능하지만, 메모리 부족으로 인해 per_device_train_batch_size를 줄이거나 gradient_accumulation_steps를 늘려야 할 수 있음.
      • 비추천: CPU, v2-8 TPU, v5e-1 TPU는 현재 작업에 부적합.
    • 선택 방법:
      1. Colab Pro+ 구독을 통해 A100 GPU를 활성화하려면 "프리미엄 GPU를 이용하시겠어요?" 링크를 클릭하여 추가 컴퓨팅 단위를 구매.
      2. "런타임 유형 변경"에서 A100 GPU를 선택.
      3. Python 3 런타임을 유지하며, 하드웨어 가속기를 변경한 후 "저장"을 클릭.

     


     

    무료 버전이므로 아쉽게 T4를 골라서 진행했지만 결국 아래와 같은 메모리 오류 발생 ㅠㅠ

     

      ValueError: Some modules are dispatched on the CPU or the disk. Make sure you have enough GPU RAM to fit the quantized model. If you want to dispatch the model on the CPU or the disk while keeping these modules in 32-bit, you need to set `llm_int8_enable_fp32_cpu_offload=True` and pass a custom `device_map` to `from_pretrained`. Check https://huggingface.co/docs/transformers/main/en/main_classes/quantization#offload-between-cpu-and-gpu for more details.


    에러 메시지 "ValueError: Some modules are dispatched on the CPU or the disk" 는 GPU에 전체 양자화된 모델을 로드하기에 충분한 메모리가 없음을 나타냅니다. load_in_4bit=True로 모델을 로드할 때 메모리 사용량을 줄이기 위해 4비트 양자화로 모델을 로드하려고 시도하지만 여전히 특정 용량의 GPU 메모리가 필요합니다. 사용 가능한 GPU 메모리가 부족하면 모델의 일부가 CPU 또는 디스크로 오프로드되어 이 오류가 발생합니다.

    # 테스트
    from transformers import pipeline, BitsAndBytesConfig
    
    # 4비트 양자화 설정
    bnb_config = BitsAndBytesConfig(
        load_in_4bit=True,
        bnb_4bit_quant_type="nf4",
        bnb_4bit_compute_dtype=torch.float16,
        bnb_4bit_use_double_quant=True,
        llm_int8_enable_fp32_cpu_offload=True  # CPU 오프로딩 활성화
    )
    
    model = AutoModelForCausalLM.from_pretrained(
        "/content/drive/MyDrive/vet_finetuned_model",
        quantization_config=bnb_config,  # 양자화 설정 적용
        device_map="auto",  # 자동으로 디바이스 할당
    )
    tokenizer = AutoTokenizer.from_pretrained("/content/drive/MyDrive/vet_finetuned_model")
    pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)

    코드를 조금 수정하긴 했지만 결국 메모리 부족으로 세션 다운 ㅠㅠ



    결론: T4로는 부족하다. 프로 결제해서 A100으로 다시 시도해보겠다. 

     

     

     

     

    728x90
    반응형
Designed by Tistory.