최근 몇 년 동안 인공 지능을 다양한 영역에 통합하면 기술과 상호 작용하는 방식에 혁명을 일으켰습니다. 가장 유망한 발전 중 하나는 시각 및 텍스트 정보를 모두 이해하고 처리 할 수있는 멀티 모달 모델의 개발입니다. 이 중 LLAMA 3.2 비전 모델은 이미지의 복잡한 분석이 필요한 응용 프로그램을위한 강력한 도구로 두드러집니다.이 기사는 LLAMA 3.2 비전 모델을 미세 조정하는 과정을 탐구합니다.
학습 목표
라마 3.2 비전 모델의 건축과 특징을 탐색하십시오.
Unsloth ai와 그 주요 특징을 소개하십시오
Unsloth AI를 사용하여 이미지 데이터 세트를 사용하여 음식 관련 데이터를 효과적으로 분석하기 위해 LLAMA 3.2 11B 비전 모델을 미세 조정하는 방법을 배우십시오.
이 기사는 데이터 과학 블로그 톤의 의 일부로 출판되었습니다.
목차
라마 3.2 비전 모델 llama 3.2 비전 모델의 응용 unsloth ai는 무엇입니까? 2.2. 비전 미세 튜닝 라마 3.2 11b Unsloth ai 1 단계. 필요한 라이브러리 설치
2 단계. 모델 정의
3 단계. DataSet 단계 4. 대화의 전환으로 데이터 세트를로드합니다. Model 6 단계. 미세 튜닝 시작 - 7 단계. 샘플 데이터에서 미세 조정
- 결론 테스트
자주 질문 .
llama 3.2 비전 모델
-
Llama 3.2 Vision Model 는 Meta에 의해 개발되었으며 고급 시각적 이해 및 추론 작업을 위해 설계된 최첨단 멀티 모달 대형 언어 모델입니다. 모델에 대한 주요 세부 사항은 다음과 같습니다.
- 아키텍처 : llama 3.2 비전은 최적화 된 변압기 아키텍처를 사용하여 LLAMA 3.1 텍스트 전용 모델을 기반으로합니다. 이미지 인코더 표현을 언어 모델과 통합하는 교차 적용 레이어로 구성된 비전 어댑터가 포함되어 있습니다.
사용 가능한 크기 : 모델은 두 가지 매개 변수 크기로 제공됩니다.
소비자 등급 gpus에 대한 효율적인 배포를 위해 11b (110 억 파라미터)
대규모 응용 프로그램의 경우 90b (90 억 매개 변수)
-
멀티 모달 입력 : llama 3.2 비전은 텍스트와 이미지를 모두 처리 할 수있어 시각적 인식, 이미지 추론, 캡션 및 이미지와 관련된 질문에 대한 답변과 같은 작업을 수행 할 수 있습니다.
교육 데이터 : 모델은 약 60 억 개의 이미지 텍스트 쌍으로 교육을 받았으며 시각적 입력에 따라 컨텐츠를 이해하고 생성하는 능력을 향상 시켰습니다.
컨텍스트 길이 - : 최대 128k 토큰의 컨텍스트 길이를 지원합니다.
도 읽으십시오 : llama 3.2 90b vs gpt 4o : 이미지 분석 비교
llama 3.2 비전 모델 의 응용
시각적 질문 답변 (vqa) : 이미지의 내용에 따라 질문 답변.
이미지 캡션 : 이미지에 대한 설명 캡션 생성
image-text 검색 : 텍스트 설명과 일치하는 이미지
시각적 접지 : 언어 참조 연결 이미지의 특정 부분에 연결됩니다.
Unsloth ai는 무엇입니까?
Unsloth AI는 LLAMA-3, MISTRAL, PHI-3 및 GEMMA와 같은 대형 언어 모델 (LLM)의 미세 조정을 향상시키기 위해 설계된 혁신적인 플랫폼입니다. 특정 작업에 미리 훈련 된 모델을 조정하는 복잡한 프로세스를 간소화하여 더 빠르고 효율적으로 만듭니다. 미스 슬 로스의 주요 특징 ai
가속화 된 훈련 : 노스 끈은 메모리 사용량을 60%줄이면서 모델 모델을 최대 30 배 더 빨리 미세 조정하는 기능을 자랑합니다. 이 상당한 개선은 수동 오토 그라드, 체인 매트릭스 곱셈 및 최적화 된 GPU 커널과 같은 고급 기술을 통해 달성됩니다.
사용자 친화적 : 플랫폼은 오픈 소스이며 설치가 쉽기 때문에 사용자가 로컬로 설정하거나 Google Colab과 같은 클라우드 리소스를 활용할 수 있습니다. 포괄적 인 문서는 미세 조정 프로세스를 탐색 할 수있는 사용자를 지원합니다
확장 성 : Unsloth는 단일 GPU에서 멀티-노드 설정에 이르기까지 다양한 하드웨어 구성을 지원하므로 소규모 팀과 엔터프라이즈 수준의 응용 프로그램에 적합합니다.
다목적 성 :
플랫폼은 다양한 인기있는 LLM과 호환되며 언어 생성, 요약 및 대화와 같은 다양한 작업에 적용될 수 있습니다.
-
Unsloth AI는 AI 모델 교육의 상당한 발전을 나타내므로 개발자와 연구원이 고성능 사용자 정의 모델을 효율적으로 생성하려는 개발자가 액세스 할 수 있습니다.
Llama 3.2 Vision의 성능 벤치 마크
LLAMA 3.2 비전 모델은 차트와 다이어그램 해석에서 뛰어납니다.
- 110 억 모델은 MMMU-Pro, Vision (23.7), ChartQA (83.4), AI2 다이어그램 (91.1)과 같은 시각적 벤치 마크에서 Claude 3 Haiku를 능가하는 반면 90 억 개의 모델은 Claude 3 Haikuin을 능가합니다.
결과적으로 Llama 3.2는 문서 이해, 시각적 질문 답변 및 차트에서 데이터 추출이 필요한 작업에 이상적인 옵션입니다.
미세 조정 라마 3.2 11b Unsloth ai
를 사용한 비전 모델
이 튜토리얼에서는 LLAMA 3.2 11B 비전 모델을 미세 조정하는 과정을 살펴볼 것입니다. 고급 기능을 활용하여 식품 품목을 인식하고 시각적 입력을 기반으로 칼로리 함량을 추정 할 때 모델의 정확성을 향상시키는 것을 목표로합니다.
이 모델을 미세 조정하려면 음식 이미지 및 영양 데이터의 뉘앙스를 더 잘 이해하여 실제 응용 분야에서의 성능을 향상시킵니다. 데이터 세트 준비 및 교육 환경 구성을 포함 하여이 미세 조정 프로세스와 관련된 주요 단계를 탐구합니다. 또한 리소스 사용량을 최소화하면서 모델 성능을 최적화하기 위해 LORA (저 순위 적응)와 같은 기술을 사용합니다.
우리는 모델의 기능을 사용자 정의하기 위해 Unsloth AI를 활용할 것입니다. 우리가 사용할 데이터 세트는 식품 이미지로 구성되며 각각은 다양한 음식 품목의 칼로리 함량에 대한 정보와 함께 제공됩니다. 이를 통해 식품 관련 데이터를 효과적으로 분석하는 모델의 능력을 향상시킬 수 있습니다.
그래서 시작하자! 1 단계. 필요한 라이브러리 설치
2 단계. 모델 정의
!pip install unsloth
로그인 후 복사
로그인 후 복사
from_pretrained : 이 메소드는 미리 훈련 된 모델과 그 토큰 화기를로드합니다. 지정된 모델은 "Unsloth/llama-3.2-11B-Vision-Instruct"입니다
load_in_4bit = true from unsloth import FastVisionModel
import torch
model, tokenizer = FastVisionModel.from_pretrained(
"unsloth/Llama-3.2-11B-Vision-Instruct",
load_in_4bit = True,
use_gradient_checkpointing = "unsloth",
)
model = FastVisionModel.get_peft_model(
model,
finetune_vision_layers = True,
finetune_language_layers = True,
finetune_attention_modules = True,
finetune_mlp_modules = True,
r = 16,
lora_alpha = 16,
lora_dropout = 0,
bias = "none",
random_state = 3443,
use_rslora = False,
loftq_config = None,
) :이 인수는 모델에 4 비트 양자화가로드되어야한다는 것을 나타냅니다. 이는 성능을 유지하면서 메모리 사용량을 크게 줄입니다.
use_gradient_checkpointing = "Unsloth": 이를 통해 그라디언트 체크 포인팅이 가능하며, 이는 중간 활성화를 저장하여 훈련 중에 메모리를 관리하는 데 도움이됩니다.
-
get_peft_model : 이 메소드는 매개 변수 효율적인 미세 조정 (PEFT) 기술을 사용하여 미세 조정에 대한 모델을 구성합니다.
미세 조정 옵션 :
finetune_vision_layers = true :
비전 계층의 미세 조정을 활성화합니다
언어 레이어의 미세 조정을 활성화합니다 (텍스트 이해를 담당하는 변압기 레이어)
finetune_attention_modules = true : 주의 모듈의 미세 조정을 활성화합니다
> FINETUNE_MLP_MODULES = TRUE : 다중 계층 퍼셉트론 (MLP) 모듈의 미세 조정을 활성화합니다
lora 매개 변수 :
-
r = 16, lora_alpha = 16, lora_dropout = 0 : 이 매개 변수는 성능을 유지하면서 훈련 가능한 매개 변수의 수를 줄이는 기술입니다.
bias =”none”:
이것은 레이어의 미세 조정 프로세스에 바이어스 용어가 포함되지 않음을 지정합니다.
random_state = 3443 : 이것은 재현성을 위해 랜덤 시드를 설정합니다. 이 시드를 사용하면 모델 미세 조정 프로세스가 결정적이며 동일한 설정으로 다시 실행되면 동일한 결과를 제공합니다.
use_rslora = false : 이것은 rslora라고 불리는 lora의 변형이 사용되지 않았 음을 나타냅니다. rslora는 매개 변수 효율적인 미세 조정에 대한 다른 접근법입니다
loftq_config = none : 이는 저 반영 정량화와 관련된 구성을 나타냅니다. 없음으로 설정되어 있으므로 양자화에 대한 특정 구성이 적용되지 않습니다.
3 단계. 데이터 세트 로드
우리는 텍스트의 칼로리 설명과 함께 음식 이미지에 데이터 세트를로드합니다.
데이터 세트에는‘이미지’,‘쿼리’,‘응답’이라는 3 개의 열이 있습니다
4 단계. 데이터 세트를 대화로 변환 -
우리는 데이터 세트를 관련된 두 가지 역할과 대화로 변환합니다 - 사용자와 보조.
어시스턴트는 사용자가 제공 한 이미지의 사용자 쿼리에 응답합니다.
5 단계. 미세 튜닝 모델 전 모델의 추론
출력 : -
항목 1 : 튀긴 만두-400-600 칼로리 항목 2 : 빨간 소스-200-300 칼로리 총 칼로리-600-900 칼로리
서빙 크기와 성분을 기준으로 두 품목의 추정 칼로리 수는 튀긴 만두와 빨간 소스의 경우 각각 400-600 및 200-300입니다. 함께 소비되면 전체 접시에 대한 추정 칼로리 수는 600-900 칼로리입니다.
총 영양 정보 :
칼로리 :
서빙 크기 : 1 찐 모모의 판
결론 : 식사를 준비하는 데 사용되는 성분을 기준으로 영양 정보를 추정 할 수 있습니다.
아래 입력 이미지에 대해 출력이 생성됩니다 :
원래 모델의 출력에서 볼 수 있듯이 텍스트에 언급 된 항목은 원래 입력 이미지에 "찐 Momos"가 있지만 "프라이드 만두"를 나타냅니다. 또한 입력 이미지에 존재하는 양상추의 칼로리는 원래 모델의 출력에 언급되지 않았습니다.
원래 모델에서 출력 :
항목 1 : 튀긴 만두-400-600 칼로리
- 항목 2 : 빨간 소스-200-300 칼로리
총 칼로리-600-900 칼로리
-
서빙 크기와 성분을 기준으로 두 품목의 추정 칼로리 수는 튀긴 만두와 빨간 소스의 경우 각각 400-600 및 200-300입니다. 함께 소비되면 전체 접시에 대한 추정 칼로리 수는 600-900 칼로리입니다.
총 영양 정보 :
칼로리 : 600-900 칼로리
서빙 크기 : 찐 모모의 1 접시
결론 : 식사를 준비하는 데 사용되는 성분에 따라 영양 정보를 추정 할 수 있습니다.6 단계. 미세 튜닝 시작
sfttrainer 매개 변수
SftTrainer (…) : !pip install unsloth
로그인 후 복사
로그인 후 복사
이것은 모델을 미세 조정하는 데 사용될 트레이너를 초기화합니다. SFTTRAINER는 모델의 미세 조정을 위해 특별히 설계되었습니다.
모델 = Model : 미세 조정 될 사전로드 또는 초기화 된 모델.
Tokenizer = Tokenizer :
텍스트 입력을 토큰 ID로 변환하는 데 사용되는 토 케이저. 이렇게하면 텍스트와 이미지 데이터가 모델에 대해 올바르게 처리되도록합니다.
data_collator = unslothvisionDatacollator (모델, 토큰 화기) : 데이터 콜라터는 데이터 배치 (특히 비전 언어 데이터)를 준비하는 데 도움이됩니다. 이 Collator는 이미지 텍스트 쌍이 함께 배치되는 방법을 처리하여 모델에 적절하게 정렬되고 형식화되도록합니다.
train_dataset = converted_dataset : - 이것은 훈련에 사용될 데이터 세트입니다. converted_dataset은 이미지 텍스트 쌍 또는 유사한 구조화 된 데이터를 포함하는 사전 처리 된 데이터 세트라고 가정합니다.
sftconfig 클래스 매개 변수
per_device_train_batch_size = 2 : - 이렇게하면 훈련 중 각 장치 (예 : GPU)에 대한 배치 크기가 2로 설정됩니다.
gradient_accumulation_steps = 4 : 이 매개 변수는 모델 가중치를 업데이트하기 전에 수행되는 순방향 패스 (또는 단계)를 결정합니다. 기본적으로 여러 개의 작은 배치에 대한 그라디언트를 축적하여 더 큰 배치 크기를 시뮬레이션 할 수 있습니다.
warmup_steps = 5 : 그의 매개 변수는 학습 속도가 작은 값에서 초기 학습 속도로 점차 증가하는 초기 교육 단계의 수를 지정합니다. 학습 속도 워밍업을위한 단계의 수, 학습 속도가 점차적으로 목표 가치로 증가합니다.
max_steps = 30 : - 미세 조정 중에 수행 할 최대 훈련 단계 (반복).
learning_rate = 2e-4 : 최적화의 학습 속도, 0.0002로 설정
정밀 설정
-
fp16 = IS_BF16_SUPPORTED () : BFLOAT16 (BF16) 정밀도가 지원되지 않으면 (IS_BF16_SUPPORTED ()에 의해 확인되지 않으면 16 비트 플로팅 포인트 정밀 (FP16)이 사용됩니다. BF16이 지원되면 코드는 대신 BF16을 자동으로 사용합니다.
bf16 = is_bf16_supported () : 이 하드웨어가 bfloat16 정밀도를 지원하고 지원되는 경우이를 활성화하는지 확인합니다.
로깅 및 최적화
-
logging_steps = 5 : 훈련 진행 상황이 기록 될 단계의 수.
optim = "ADAMW_8BIT": 이것은 8 비트 정밀도 (보다 효율적인 계산 및 메모리 사용 감소 가능성)로 ADAMW로 OPTIMIZER를 설정합니다.
weight_decay = 0.01 :
큰 가중치를 처벌하여 과결을 방지하기위한 중량 붕괴 (L2 정규화).- lr_scheduler_type =”linear”: 이것은 학습 속도 스케줄러를 선형 붕괴로 설정합니다. 여기서 학습 속도는 초기 값에서 0으로 선형 적으로 감소합니다. .
종자 = 3407 : - 이것은 훈련에서 재현성을 위해 임의의 시드를 설정합니다.
output_dir =”출력”: 훈련 된 모델 및 기타 출력 (예 : 로그)이 저장되는 디렉토리를 지정합니다.
report_to =”none”:
이것은 웨이트 및 바이어스와 같은 외부 시스템에보고하는 것을 비활성화하므로 교육 로그는 원격 추적 서비스로 전송되지 않습니다.
-
비전 별 매개 변수
remove_unused_columns = false : 는 모든 열을 데이터 세트에 유지하며 비전 작업에 필요할 수 있습니다.
DataSet_Text_field =””:
데이터 세트의 텍스트 데이터가 포함 된 필드를 나타냅니다. 여기에는 비어 있지 않으며 특정 텍스트 필드가 필요하지 않을 수 있습니다. - .
DataSet_kwargs = {“skip_prepare_dataset”: true} : 이미 준비되었다고 가정하고 데이터 세트에 대한 추가 준비 단계를 건너 뜁니다.
DataSet_num_proc = 4
: 데이터 세트를로드하거나 처리 할 때 사용할 프로세스 수는 DataSet을로드하거나 처리 할 때 사용할 프로세스 수가 속도를 높일 수 있습니다. THEDATASET_NUM_PROCPARAMETER를 설정하면 데이터 세트의 병렬 처리를 활성화 할 수 있습니다.
max_seq_length = 2048 :
입력 데이터의 최대 시퀀스 길이로 더 긴 시퀀스를 처리 할 수 있습니다. max_seq_length 매개 변수는 한 번에 모델에 공급 될 수있는 토큰 (또는 입력 ID)의 상한을 지정합니다.이 매개 변수를 너무 낮게 설정하면 더 긴 입력을 절단 할 수있어 중요한 정보가 손실 될 수 있습니다.
도 읽으십시오 : 미세 조정 라마 3.2 3b rag
7 단계. 모델 게시물 미세 조정 결과 의 결과 확인
미세 조정 모델에서 출력 :
위 내용은 미세 조정 라마 3.2 이미지에서 칼로리 추출을위한 비전의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!