미세 조정 라마 3.2 3B 헝겊 분석 - 분석 Vidhya
소규모 언어 모델 (SLM)은 AI에 큰 영향을 미치고 있습니다. 그들은 효율적이고 비용 효율적으로 강력한 성능을 제공합니다. 눈에 띄는 예 중 하나는 Llama 3.2 3B입니다. RAG ( Rectrive-Augmented Generation ) 작업에서 예외적으로 잘 수행되어 계산 비용 및 메모리 사용량을 절감하면서 높은 정확도를 유지합니다. 이 기사는 LLAMA 3.2 3B 모델을 미세 조정하는 방법을 살펴 봅니다. 소규모 모델이 RAG 작업에서 어떻게 뛰어난 방법을 배우고 Compact AI 솔루션이 달성 할 수있는 것의 경계를 넓 힙니다.
목차
- llama 3.2 3b는 무엇입니까?
- Finetuning Llama 3.2 3B
- 로라
- 라이브러리가 필요합니다
- 라이브러리를 가져옵니다
- 모델과 토 케이저를 초기화하십시오
- PEFT 모델을 초기화하십시오
- 데이터 처리
- 트레이너 매개 변수 설정
- 모델을 미세 조정합니다
- 모델을 테스트하고 저장하십시오
- 결론
- 자주 묻는 질문
llama 3.2 3b는 무엇입니까?
Meta가 개발 한 LLAMA 3.2 3B 모델은 질문 답변, 요약 및 대화 시스템과 같은 작업을 위해 30 억 매개 변수를 갖춘 다국어 SLM입니다. 업계 벤치 마크에서 많은 오픈 소스 모델을 능가하고 다양한 언어를 지원합니다. 다양한 크기로 제공되는 LLAMA 3.2는 효율적인 계산 성능을 제공하며 모바일 및 에지 환경에서 더 빠르고 메모리 효율적인 배포를위한 양자화 된 버전을 포함합니다.
또한 읽기 : 상위 13 개 소규모 언어 모델 (SLM)
Finetuning Llama 3.2 3B
미세 조정은 SLM 또는 LLM을 의료, 법률 또는 RAG 응용 프로그램과 같은 특정 도메인 또는 작업에 적용하는 데 필수적입니다. 사전 훈련을 통해 언어 모델은 다양한 주제에서 텍스트를 생성 할 수 있지만 미세 조정은 도메인 별 또는 작업 별 데이터에 대한 모델을 관련성과 성능을 향상시킵니다. 모든 매개 변수를 미세 조정하는 높은 계산 비용을 해결하기 위해 PEFT (Parameter Efficient Fine-Tuning)와 같은 기술은 모델 매개 변수의 하위 집합 만 훈련하는 데 중점을두고 성능을 유지하면서 리소스 사용량을 최적화합니다.
로라
이러한 PEFT 방법 중 하나는 낮은 순위 적응 (LORA)입니다.
LORA에서는 SLM 또는 LLM의 중량 매트릭스가 두 개의 저급 매트릭스의 생성물로 분해됩니다.
w = wa * wb
W에 M 행과 N 열이 있으면 M 행 및 R 열이있는 WA로 분해되고 R 행 및 N 열이있는 WB가 분해 될 수 있습니다. 여기서 r은 m 또는 n보다 훨씬 작습니다. 따라서 M*N 값을 교육하는 대신 r*(Mn) 값 만 훈련 할 수 있습니다. r을 우리가 선택할 수있는 과수기 동물 인 순위라고합니다.
def lora_linear (x) :<br> h = x @ w # 일반 선형<br> h = scale * (x @ w_a @ w_b) # 저급 업데이트<br> 반환 h
체크 아웃 : Lora 및 Qlora를 사용한 대형 언어 모델의 매개 변수 효율적인 미세 조정
LLAMA 3.2 3B 모델에서 LORA를 구현합시다.
라이브러리가 필요합니다
- 풀다 - 2024.12.9
- 데이터 세트 - 3.1.0
위의 나무 늘보 버전을 설치하면 호환 Pytorch, Transformers 및 Nvidia GPU 라이브러리도 설치됩니다. Google Colab을 사용하여 GPU에 액세스 할 수 있습니다.
지금 구현을 봅시다!
라이브러리를 가져옵니다
Unsloth import에서 fastlanguagemodel, is_bfloat16_supported, train_on_responses_only 데이터 세트에서 import load_dataset, dataset trl import sfttrainer, apply_chat_template에서 Transformers에서 Training Arguments, DatacollatorforSeq2Seq, TextStreamer에서 토치 수입
모델과 토 케이저를 초기화하십시오
max_seq_length = 2048 dtype = none # 자동 감지용 없음. load_in_4bit = true # 4 비트 양자화를 사용하여 메모리 사용을 줄입니다. 거짓일 수 있습니다. 모델, Tokenizer = FastLanguagemodel.from_pretrained ( model_name = "Unsloth/llama-3.2-3B-instruct", max_seq_length = max_seq_length, dtype = dtype, load_in_4bit = load_in_4bit, # TOKEN = "HF _...", # Meta-Llama/llama-3.2-11B와 같은 게이트 모델을 사용하는 경우 # 사용 ))
Unsloth가 지원하는 다른 모델의 경우이 문서를 참조 할 수 있습니다.
PEFT 모델을 초기화하십시오
model = fastlanguagemodel.get_peft_model ( 모델, r = 16, target_modules = [ "q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj",], lora_alpha = 16, lora_dropout = 0, 바이어스 = "없음", use_gradient_checkpointing = "Unsloth", random_state = 42, use_rslora = false, loftq_config = 없음, ))
각 매개 변수에 대한 설명
- R : Lora의 계급; 값이 높을수록 정확도가 향상되지만 더 많은 메모리를 사용합니다 (제안 : 8–128).
- Target_Modules : 미세 조정 모듈; 더 나은 결과를 위해 모든 것을 포함하십시오
- lora_alpha : 스케일링 계수; 일반적으로 순위 r의 두 배나 동일합니다.
- LORA_DROPOUT : 드롭 아웃 속도; 최적화되고 빠른 교육을 위해 0으로 설정하십시오.
- 바이어스 : 바이어스 유형; "없음"은 속도와 최소한 과적으로 최적화되어 있습니다.
- use_gradient_checkpointing : 장기 텍스트 교육을위한 메모리를 줄입니다. "Unsloth"가 적극 권장됩니다.
- Random_state : 재현 가능한 결과를 보장하는 결정 론적 실행을위한 시드 (예 : 42).
- use_rslora : 알파 선택을 자동화합니다. 순위 안정화 된 LORA에 유용합니다.
- loftq_config : 메모리 집약적이지만 더 나은 정확도를 위해 상위 R 단일 벡터로 LORA를 초기화합니다.
데이터 처리
우리는 Rag 데이터를 사용하여 Finetune을 사용합니다. Huggingface에서 데이터를 다운로드하십시오.
DataSet = load_dataset ( "Neural-Bridge/Rag-Dataset-1200", Split = "Train")
데이터 세트에는 다음과 같이 세 가지 키가 있습니다.
DataSet ({feature : [ 'context', 'Question', 'Answer'], num_rows : 960})
데이터는 언어 모델에 따라 특정 형식이어야합니다. 자세한 내용은 여기를 참조하십시오.
따라서 데이터를 필요한 형식으로 변환하겠습니다.
def convert_dataset_to_dict (dataset) : dataSet_dict = { "즉각적인": [], "완성": [] } 데이터 세트의 행 : user_content = f "context : {row [ 'context']} \ nquestion : {row [ 'Question']}" Assistant_Content = Row [ 'Answer'] DataSet_dict [ "Prompt"]. Append ([[[ { "역할": "사용자", "컨텐츠": user_content} ]))) DataSet_dict [ "완료"]. Append ([[[ { "역할": "Assistant", "Content": Assistant_Content} ]))) DataSet_dict를 반환합니다 converted_data = convert_dataset_to_dict (dataSet) DataSet = dataset.from_dict (converted_data) DataSet = dataset.map (apply_chat_template, fn_kwargs = { "Tokenizer": Tokenizer})
데이터 세트 메시지는 다음과 같습니다.
트레이너 매개 변수 설정
SLM을 미세 조정하기 위해 트레이너를 초기화 할 수 있습니다.
트레이너 = sfttrainer ( 모델 = 모델, Tokenizer = Tokenizer, Train_Dataset = 데이터 세트, max_seq_length = max_seq_length, data_collator = DataCollatorforSeq2Seq (Tokenizer = Tokenizer), DataSet_num_Proc = 2, Packing = False, #은 짧은 시퀀스를 위해 5 배 더 빠르게 훈련 할 수 있습니다. args = training arguments ( per_device_train_batch_size = 2, gradient_accumulation_steps = 4, Warmup_steps = 5, # num_train_epochs = 1, # 전체 훈련 실행에 대해 설정하십시오. max_steps = 6, # 소수를 사용하여 테스트합니다 Learning_rate = 2E-4, fp16 = is_bfloat16_supported (), bf16 = is_bfloat16_supported (), logging_steps = 1, 최적 = "adamw_8bit", weight_decay = 0.01, lr_scheduler_type = "선형", 종자 = 3407, output_dir = "출력", report_to = "none", # wandb 등에 사용하십시오 ),) ))
일부 매개 변수에 대한 설명 :
- PER_DEVICE_TRAIN_BATCH_SIZE : 장치 당 배치 크기; 더 많은 GPU 메모리를 활용하려면 증가하지만 비효율적 인 패딩을 지켜보십시오 (제안 : 2).
- gradient_accumulation_steps : 추가 메모리 사용없이 더 큰 배치 크기를 시뮬레이션합니다. 더 부드러운 손실 곡선의 증가 (제안 : 4).
- Max_steps : 총 교육 단계; 더 빠른 실행 (예 : 60)으로 설정하거나 전체 데이터 세트 패스 (예 : 1-3)에`num_train_epochs`를 사용하십시오.
- Learning_rate : 훈련 속도와 수렴을 제어합니다. 낮은 요금 (예 : 2E-4)은 정확도를 향상 시키지만 훈련이 느립니다.
응답 템플릿을 지정 하여만 응답에 대한 모델 열차를 만듭니다.
트레이너 = train_on_responses_only ( 훈련자, 습기_part = " user \ n \ n", response_part = " 어시스턴트 \ n \ n", ))
모델을 미세 조정합니다
Trainer_stats = Trainer.Train ()
교육 통계는 다음과 같습니다.
모델을 테스트하고 저장하십시오
추론을 위해 모델을 사용합시다.
fastlanguagemodel.for_inference (모델) 메시지 = [ { "역할": "사용자", "내용": "컨텍스트 : 하늘은 일반적으로 낮에는 분명합니다. 질문 : 물은 어떤 색입니까?"}, ]] 입력 = tokenizer.apply_chat_template ( 메시지, Tokenize = true, add_generation_prompt = true, return_tensors = "pt", ) .to ( "cuda") text_streamer = TextStreamer (Tokenizer, skip_prompt = true) _ = model.generate (input_ids = inputs, streamer = text_streamer, max_new_tokens = 128, use_cache = true, 온도 = 1.5, min_p = 0.1)
로라 가중치를 포함한 훈련 된 것을 저장하려면 아래 코드를 사용하십시오.
model.save_pretraind_merged ( "model", tokenizer, save_method = "merged_16bit")
체크 아웃 : 대형 언어 모델을 미세 조정하는 안내서
결론
RAG 작업의 미세 조정 LLAMA 3.2 3B는 계산 비용을 줄이는 고성능을 제공하는 작은 모델의 효율성을 보여줍니다. LORA와 같은 기술은 정확도를 유지하면서 리소스 사용량을 최적화합니다. 이 접근법은 도메인 별 응용 프로그램을 강화하여 고급 AI가보다 접근 가능하고 확장 가능하며 비용 효율적이며 실제 도전에 대한 AI를 검색하고 민주화하는 혁신을 주도합니다.
또한 읽으십시오 : 메타 라마 3.2로 시작하십시오
자주 묻는 질문
Q1. 헝겊이란?A. Rag는 검색 시스템과 생성 모델을 결합하여 외부 지식에 접지하여 응답을 향상시켜 질문 답변 및 요약과 같은 작업에 이상적입니다.
Q2. 미세 조정을 위해 LLAMA 3.2 3B를 선택하는 이유는 무엇입니까?A. LLAMA 3.2 3B는 성능, 효율성 및 확장 성의 균형을 제공하여 RAG 작업에 적합한 동시에 계산 및 메모리 요구 사항을 줄입니다.
Q3. Lora 란 무엇이며 미세 조정을 어떻게 개선합니까?A. 저 순위 적응 (LORA)은 모든 모델 매개 변수 대신 저 순위 행렬 만 교육하여 자원 사용량을 최소화하여 제한된 하드웨어에 대한 효율적인 미세 조정을 가능하게합니다.
Q4. 이 기사에서 미세 조정에 어떤 데이터 세트가 사용됩니까?A. Hugging Face는 더 나은 작업 성능을 위해 LLAMA 3.2 3B 모델을 미세 조정하기 위해 컨텍스트, 질문 및 답변이 포함 된 Rag 데이터 세트를 제공합니다.
Q5. 미세 조정 모델을 Edge 장치에 배포 할 수 있습니까?A. 예, LLAMA 3.2 3B, 특히 양자화 된 형태로 Edge 및 모바일 환경에서 메모리 효율적인 배포에 최적화되어 있습니다.
위 내용은 미세 조정 라마 3.2 3B 헝겊 분석 - 분석 Vidhya의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

에이전트 AI에서 작업하는 동안 개발자는 종종 속도, 유연성 및 자원 효율성 사이의 상충 관계를 탐색하는 것을 발견합니다. 나는 에이전트 AI 프레임 워크를 탐구하고 Agno를 만났다 (이전에는 ph-이었다.

SQL의 Alter Table 문 : 데이터베이스에 열을 동적으로 추가 데이터 관리에서 SQL의 적응성이 중요합니다. 데이터베이스 구조를 즉시 조정해야합니까? Alter Table 문은 솔루션입니다. 이 안내서는 Colu를 추가합니다

문제가있는 벤치 마크 : 라마 사례 연구 2025 년 4 월 초, Meta는 LLAMA 4 제품군을 공개하여 GPT-4O 및 Claude 3.5 Sonnet과 같은 경쟁자들에 대해 호의적으로 배치 한 인상적인 성능 지표를 자랑했습니다. Launc의 중심

릴리스에는 GPT-4.1, GPT-4.1 MINI 및 GPT-4.1 NANO의 세 가지 모델이 포함되어 있으며, 대형 언어 모델 환경 내에서 작업 별 최적화로 이동합니다. 이 모델은 사용자를 향한 인터페이스를 즉시 대체하지 않습니다

임베딩 모델의 힘 잠금 해제 : Andrew Ng의 새로운 코스에 대한 깊은 다이빙 기계가 완벽한 정확도로 질문을 이해하고 응답하는 미래를 상상해보십시오. 이것은 공상 과학이 아닙니다. AI의 발전 덕분에 R이되었습니다

비디오 게임이 불안을 완화하거나 집중하거나 ADHD를 가진 어린이를 지원할 수 있습니까? 건강 관리 도전이 전 세계적으로 급증함에 따라, 특히 청소년들 사이에서 혁신가들은 비디오 게임 인 가능성이없는 도구로 전환하고 있습니다. 이제 세계 최대의 엔터테인먼트 인더스 중 하나입니다

Rocketpy : 포괄적 인 가이드로 로켓 발사 시뮬레이션 이 기사는 강력한 파이썬 라이브러리 인 Rocketpy를 사용하여 고출력 로켓 런칭을 시뮬레이션하는 것을 안내합니다. 로켓 구성 요소 정의에서 Simula 분석에 이르기까지 모든 것을 다룰 것입니다.

Google의 AI 전략의 기초로서 Gemini Gemini는 Google의 AI 에이전트 전략의 초석으로 고급 멀티 모드 기능을 활용하여 텍스트, 이미지, 오디오, 비디오 및 코드에서 응답을 처리하고 생성합니다. Deepm에 의해 개발되었습니다
