Kami telah membahas banyak panduan tentang fine-tuning large language models (LLM), tetapi sangat sedikit sumber yang membahas proses fine-tuning model multimodal. Dalam tutorial ini, kita akan mengeksplorasi model multimodal mutakhir bernama Llama 3.2 Vision Model dan menunjukkan cara melakukan fine-tuning menggunakan dataset produk Amazon. Tujuan kita adalah membangun penghasil deskripsi produk yang menyediakan caption gambar yang akurat dan disederhanakan untuk produk yang terdaftar di Amazon.
Jika Anda baru dalam fine-tuning LLM, silakan ikuti kursus Fine-tuning with Llama 3 untuk memahami metodologi dan terminologi umum. Anda juga dapat melihat tutorial Llama 3.2 90B kami, yang membahas cara membangun aplikasi image captioning menggunakan Streamlit untuk front end, Llama 3.2 90B untuk menghasilkan caption, dan Groq sebagai API.
Gambar oleh Penulis
Memahami Llama 3.2 Vision Models
Llama 3.2 memperkenalkan model multimodal yang dapat memproses data gambar dan teks untuk menghasilkan respons yang natural dan akurat. Model visi Llama 3.2 tersedia dalam variasi parameter 11B dan 90B dan secara khusus dirancang untuk menangani use case penalaran berbasis gambar dengan presisi yang luar biasa. Model ini melampaui banyak model multimodal open-source dan tertutup yang ada pada tolok ukur industri umum.
Model visi Llama 3.2 unggul dalam tugas seperti pemahaman tingkat dokumen, analisis bagan dan grafik, image captioning, dan visual grounding, di mana deskripsi bahasa natural digunakan untuk mengidentifikasi objek dalam gambar.
Arsitektur model Llama 3.2 Vision
Model Llama 3.2 Vision dibangun di atas model Llama 3.1 yang hanya teks, yaitu model bahasa canggih yang menggunakan arsitektur transformer. Model ini di-fine-tune dengan supervised learning (SFT) dan reinforcement learning with human feedback (RLHF) agar selaras dengan preferensi manusia terkait kebermanfaatan dan keamanan.
Untuk memfasilitasi pengenalan gambar, Llama 3.2 Vision menggabungkan vision adapter yang dilatih secara terpisah. Adapter ini menggunakan lapisan cross-attention untuk mengintegrasikan keluaran image encoder ke dalam model bahasa Llama 3.1 yang telah dipra-latih, sehingga mampu menangani tugas berbasis teks dan gambar secara efektif.
Fitur utama Llama 3.2 Vision
Pemahaman gambar: Dapat dengan mudah mengenali dan mengklasifikasikan objek dalam gambar, memungkinkan tugas seperti image captioning dan interpretasi adegan.
OCR kompleks dan pemahaman bagan: Versi 90B dari model Llama 3.2 unggul dalam mengekstrak wawasan dari visualisasi kompleks, seperti bagan dan grafik.
Pemahaman dokumen: Mendukung OCR (Optical Character Recognition) end-to-end, memungkinkan pengguna mengekstrak teks dan data langsung dari dokumen.
Visual grounding: Model baru ini memungkinkan pengguna menandai objek atau menjawab pertanyaan tentang data visual.
Use case model Llama 3.2 Vision
Llama 3.2 Vision unggul dalam use case seperti visual question answering, analisis dokumen, image captioning, image-text retrieval, dan visual grounding.
Visual Question Answering (VQA): Menjawab pertanyaan berdasarkan gambar dengan memahami isinya.
Document VQA (DocVQA): Menganalisis dokumen seperti peta atau kontrak, menafsirkan teks dan tata letak untuk menjawab pertanyaan.
Image Captioning: Menghasilkan caption bahasa natural dengan mengekstrak detail dan memahami adegan dalam gambar.
Image-Text Retrieval: Mencocokkan gambar dengan deskripsi teks, memungkinkan pencarian dan pengorganisasian yang lebih canggih.
Visual Grounding: Menandai objek atau area dalam gambar berdasarkan deskripsi bahasa natural.
Fine-Tuning Llama 3.2 Vision pada Dataset Produk Amazon
Untuk proyek ini, kita akan menggunakan Kaggle sebagai lingkungan pengkodean dan komputasi, Unsloth sebagai kerangka kerja fine-tuning, dan dataset deskripsi produk Amazon. Unsloth cepat, mengonsumsi lebih sedikit memori GPU, dan membutuhkan lebih sedikit baris kode dibandingkan metode tradisional.
Buat notebook Kaggle baru dan atur akselerator untuk menggunakan dua GPU T4. Tambahkan token Hugging Face Anda sebagai rahasia Kaggle agar Anda dapat mendorong model ke repositori Hugging Face Anda dengan aman nanti. Lalu, instal paket Python unsloth menggunakan perintah pip.
Dalam penyiapan ini, kita memuat model Llama-3.2-11B-Vision-Instruct, khususnya versi yang disediakan oleh Unsloth, yang dioptimalkan untuk fine-tuning dan inferensi yang efisien. Model dimuat dalam kuantisasi 4-bit untuk secara signifikan mengurangi penggunaan memori dan kebutuhan komputasi, sehingga memungkinkan menjalankan model visi besar pada GPU T4.
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",
)Didukung oleh
3. Menyiapkan LoRA
LoRA (Low-Rank Adaptation) adalah teknik untuk melakukan fine-tuning model pra-latih berukuran besar secara efisien dengan menambahkan matriks low-rank yang dapat dipelajari ke bagian tertentu dari model. Pendekatan ini ringan dan efisien secara komputasi serta memungkinkan fine-tuning khusus tugas tanpa memodifikasi struktur inti model pra-latih.
Untuk melatih model menggunakan LoRA, kita fokus pada pemilihan dan fine-tuning komponen tertentu, seperti vision layer, language layer, modul attention, dan modul MLP. Ini memungkinkan kita menyesuaikan model untuk tugas spesifik dengan perubahan minimal pada arsitektur asli.
Muat dataset philschmid/amazon-product-descriptions-vlm dari Hugging Face Hub dan pilih hanya 500 sampel pertama. Dataset berisi gambar produk dan deskripsi produk beserta informasi lain yang diperlukan.
from datasets import load_dataset
dataset = load_dataset("philschmid/amazon-product-descriptions-vlm",
split ="train[0:500]")
datasetDidukung oleh
'Authentic Dale Earnhardt Jr. 1:24 scale diecast car. Nationwide Raw Finish. Collectible model car for racing fans. Perfect gift for NASCAR enthusiasts.'Didukung oleh
5. Memproses dataset
Sekarang, kita akan memproses dataset yang hanya berisi teks dan gambar. Template prompt berisi pertanyaan pengguna, gambar, dan deskripsi produk.
instruction ="""
You are an expert Amazon worker who is good at writing product descriptions.
Write the product description accurately by looking at the image.
"""defconvert_to_conversation(sample):
conversation =[{"role":"user","content":[{"type":"text","text": instruction},{"type":"image","image": sample["image"]},],},{"role":"assistant","content":[{"type":"text","text": sample["description"]}],},]return{"messages": conversation}pass
converted_dataset =[convert_to_conversation(sample)for sample in dataset]Didukung oleh
Dataset baru ini bukan tabular; alih-alih, mengikuti gaya prompt yang mirip dengan format OpenAI.
{'messages':[{'role':'user','content':[{'type':'text','text':'\nYou are an expert Amazon worker who is good at writing product descriptions. \nWrite the product description accurately by looking at the image.\n'},{'type':'image','image':<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x302>}]},{'role':'assistant','content':[{'type':'text','text':'Authentic Dale Earnhardt Jr. 1:24 scale diecast car. Nationwide Raw Finish. Collectible model car for racing fans. Perfect gift for NASCAR enthusiasts.'}]}]}Didukung oleh
6. Inferensi model sebelum fine-tuning
Kita akan memilih sampel ke-46 dari dataset dan menjalankan inferensi pada sampel tersebut untuk menilai seberapa baik ia menulis deskripsi produk secara langsung tanpa fine-tuning.
Deskripsi yang dihasilkan panjang dan tidak akurat. Bahkan gaya penulisannya berbeda.
The image showcases a race car featuring the well-known sponsorship branding "Nationwide," likely the primary vehicle in the Nationwide Series. The vehicle has a blue hood with the "Nationwide" logo prominently displayed and white text that reads,"on your side," on the windscreen. The car is predominantly white and grey, adorned with sponsor decals on various parts of the vehicle.
The front grille showcases the Chevrolet "Bowtie" logo,and the car is equipped with Chevrolet emblems and other sponsor decals, including:
• A white 88 logo on the front windscreen
Notably, the vehicle's wheels are equipped with "GoodYearDidukung oleh
7. Menyiapkan model untuk fine-tuning
Sekarang kita akan menyiapkan model untuk pelatihan dan menginisialisasi pelatih supervised fine-tuning (SFT) untuk mempersiapkan model visi berlatih pada data collator kustom, dataset, dan konfigurasi pelatihan yang dioptimalkan untuk fine-tuning yang efisien.
from unsloth import is_bf16_supported
from unsloth.trainer import UnslothVisionDataCollator
from trl import SFTTrainer, SFTConfig
FastVisionModel.for_training(model)# Enable for training!
trainer = SFTTrainer(
model=model,
tokenizer=tokenizer,
data_collator=UnslothVisionDataCollator(model, tokenizer),# Must use!
train_dataset=converted_dataset,
args=SFTConfig(
per_device_train_batch_size=2,
gradient_accumulation_steps=4,
warmup_steps=5,
max_steps=30,
learning_rate=2e-4,
fp16=not is_bf16_supported(),
bf16=is_bf16_supported(),
logging_steps=5,
optim="adamw_8bit",
weight_decay=0.01,
lr_scheduler_type="linear",
seed=3407,
output_dir="outputs",
report_to="none",# For Weights and Biases
remove_unused_columns=False,
dataset_text_field="",
dataset_kwargs={"skip_prepare_dataset":True},
dataset_num_proc=4,
max_seq_length=2048,),)Didukung oleh
8. Melatih model
Mulai proses pelatihan dengan menjalankan kode trainer.train().
Model telah menyelesaikan satu epoch dalam 16 menit, dan training loss berkurang secara bertahap. Ini hasil yang baik.
9. Inferensi model setelah fine-tuning
Sekarang kita akan menguji model untuk memeriksa apakah fine-tuning berhasil. Kita akan memilih gambar sampel yang sama dari dataset dan menjalankan inferensi padanya.
Hasilnya bagus tetapi tidak sepenuhnya akurat. Tanda pagar tidak diperlukan. Untuk hasil optimal, kita perlu melatih model pada dataset lengkap dengan setidaknya 3 epoch.
Bring the thrill of NASCAR racing to your desk or shelf with the 1/64 Die-Cast 2016 NASCAR 88 Dale Earnhardt Jr. Nationwide Chevrolet SS! Highly detailed and precision engineered, this collectible die-cast car captures the iconic look of Earnhardt's famous No.88 ride. Perfect for kids and adults alike, this miniature masterpiece makes a great gift.#NASCAR #DieCast #CollectibleCars #DaleEarnhardtJr #Nationwide<|eot_id|>Didukung oleh
10. Menyimpan model dan tokenizer
Mari simpan model secara lokal lalu dorong ke Hugging Face Hub. Untuk mengunggah model ke server Hugging Face, kita perlu masuk menggunakan token Hugging Face kita.
Fine-tuning model Llama 3.2 Vision membuka dunia kemungkinan baru, khususnya pada skenario di mana gambar dan teks dibutuhkan untuk memberikan hasil yang relevan dan akurat. Dengan melakukan fine-tuning pada dataset kustom, kita dapat meningkatkan kinerja dan menyesuaikan gaya untuk aplikasi seperti Visual Question Answering (VQA), Document VQA (DocVQA), Image Captioning, dan Image-Text Retrieval.
Dalam tutorial ini, kita mempelajari secara mendalam model Llama 3.2 Vision. Kita juga melakukan fine-tuning varian 11B dari model tersebut pada dataset deskripsi produk Amazon untuk membangun penghasil deskripsi produk yang sangat terpersonalisasi yang mengadopsi gaya yang diinginkan dan memberikan deskripsi produk yang akurat.
Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kami telah membahas banyak panduan tentang fine-tuning large language models (LLM), tetapi sangat sedikit sumber yang membahas proses fine-tuning model multimodal. Dalam tutorial ini, kita akan mengeksplorasi model multimodal mutakhir bernama Llama 3.2 Vision Model dan menunjukkan cara melakukan fine-tuning menggunakan dataset produk Amazon. Tujuan kita adalah membangun penghasil deskripsi produk yang menyediakan caption gambar yang akurat dan disederhanakan untuk produk yang terdaftar di Amazon.
Jika Anda baru dalam fine-tuning LLM, silakan ikuti kursus Fine-tuning with Llama 3 untuk memahami metodologi dan terminologi umum. Anda juga dapat melihat tutorial Llama 3.2 90B kami, yang membahas cara membangun aplikasi image captioning menggunakan Streamlit untuk front end, Llama 3.2 90B untuk menghasilkan caption, dan Groq sebagai API.
Gambar oleh Penulis
Memahami Llama 3.2 Vision Models
Llama 3.2 memperkenalkan model multimodal yang dapat memproses data gambar dan teks untuk menghasilkan respons yang natural dan akurat. Model visi Llama 3.2 tersedia dalam variasi parameter 11B dan 90B dan secara khusus dirancang untuk menangani use case penalaran berbasis gambar dengan presisi yang luar biasa. Model ini melampaui banyak model multimodal open-source dan tertutup yang ada pada tolok ukur industri umum.
Baca Panduan Llama 3.2: Cara Kerja, Use Case, dan Lainnya untuk mempelajari semua variabel model secara mendalam.
Model visi Llama 3.2 unggul dalam tugas seperti pemahaman tingkat dokumen, analisis bagan dan grafik, image captioning, dan visual grounding, di mana deskripsi bahasa natural digunakan untuk mengidentifikasi objek dalam gambar.
Arsitektur model Llama 3.2 Vision
Model Llama 3.2 Vision dibangun di atas model Llama 3.1 yang hanya teks, yaitu model bahasa canggih yang menggunakan arsitektur transformer. Model ini di-fine-tune dengan supervised learning (SFT) dan reinforcement learning with human feedback (RLHF) agar selaras dengan preferensi manusia terkait kebermanfaatan dan keamanan.
Untuk memfasilitasi pengenalan gambar, Llama 3.2 Vision menggabungkan vision adapter yang dilatih secara terpisah. Adapter ini menggunakan lapisan cross-attention untuk mengintegrasikan keluaran image encoder ke dalam model bahasa Llama 3.1 yang telah dipra-latih, sehingga mampu menangani tugas berbasis teks dan gambar secara efektif.
Fitur utama Llama 3.2 Vision
Use case model Llama 3.2 Vision
Llama 3.2 Vision unggul dalam use case seperti visual question answering, analisis dokumen, image captioning, image-text retrieval, dan visual grounding.
Fine-Tuning Llama 3.2 Vision pada Dataset Produk Amazon
Untuk proyek ini, kita akan menggunakan Kaggle sebagai lingkungan pengkodean dan komputasi, Unsloth sebagai kerangka kerja fine-tuning, dan dataset deskripsi produk Amazon. Unsloth cepat, mengonsumsi lebih sedikit memori GPU, dan membutuhkan lebih sedikit baris kode dibandingkan metode tradisional.
Jika Anda ingin melakukan fine-tuning LLM untuk solusi generasi teks, kami memiliki tutorial yang tepat untuk Anda: Fine-tuning Llama 3.2 dan Menggunakannya Secara Lokal: Panduan Langkah demi Langkah.
1. Penyiapan
Buat notebook Kaggle baru dan atur akselerator untuk menggunakan dua GPU T4. Tambahkan token Hugging Face Anda sebagai rahasia Kaggle agar Anda dapat mendorong model ke repositori Hugging Face Anda dengan aman nanti. Lalu, instal paket Python
unslothmenggunakan perintah pip.Pelajari lebih lanjut tentang Unsloth dengan membaca Panduan Unsloth: Optimalkan dan Percepat Fine-Tuning LLM.
2. Memuat model
Dalam penyiapan ini, kita memuat model
Llama-3.2-11B-Vision-Instruct, khususnya versi yang disediakan oleh Unsloth, yang dioptimalkan untuk fine-tuning dan inferensi yang efisien. Model dimuat dalam kuantisasi 4-bit untuk secara signifikan mengurangi penggunaan memori dan kebutuhan komputasi, sehingga memungkinkan menjalankan model visi besar pada GPU T4.3. Menyiapkan LoRA
LoRA (Low-Rank Adaptation) adalah teknik untuk melakukan fine-tuning model pra-latih berukuran besar secara efisien dengan menambahkan matriks low-rank yang dapat dipelajari ke bagian tertentu dari model. Pendekatan ini ringan dan efisien secara komputasi serta memungkinkan fine-tuning khusus tugas tanpa memodifikasi struktur inti model pra-latih.
Untuk melatih model menggunakan LoRA, kita fokus pada pemilihan dan fine-tuning komponen tertentu, seperti vision layer, language layer, modul attention, dan modul MLP. Ini memungkinkan kita menyesuaikan model untuk tugas spesifik dengan perubahan minimal pada arsitektur asli.
4. Memuat dataset
Muat dataset philschmid/amazon-product-descriptions-vlm dari Hugging Face Hub dan pilih hanya 500 sampel pertama. Dataset berisi gambar produk dan deskripsi produk beserta informasi lain yang diperlukan.
Ini adalah salah satu gambar produk.
Berikut deskripsinya.
5. Memproses dataset
Sekarang, kita akan memproses dataset yang hanya berisi teks dan gambar. Template prompt berisi pertanyaan pengguna, gambar, dan deskripsi produk.
Dataset baru ini bukan tabular; alih-alih, mengikuti gaya prompt yang mirip dengan format OpenAI.
6. Inferensi model sebelum fine-tuning
Kita akan memilih sampel ke-46 dari dataset dan menjalankan inferensi pada sampel tersebut untuk menilai seberapa baik ia menulis deskripsi produk secara langsung tanpa fine-tuning.
Deskripsi yang dihasilkan panjang dan tidak akurat. Bahkan gaya penulisannya berbeda.
7. Menyiapkan model untuk fine-tuning
Sekarang kita akan menyiapkan model untuk pelatihan dan menginisialisasi pelatih supervised fine-tuning (SFT) untuk mempersiapkan model visi berlatih pada data collator kustom, dataset, dan konfigurasi pelatihan yang dioptimalkan untuk fine-tuning yang efisien.
8. Melatih model
Mulai proses pelatihan dengan menjalankan kode
trainer.train().Model telah menyelesaikan satu epoch dalam 16 menit, dan training loss berkurang secara bertahap. Ini hasil yang baik.
9. Inferensi model setelah fine-tuning
Sekarang kita akan menguji model untuk memeriksa apakah fine-tuning berhasil. Kita akan memilih gambar sampel yang sama dari dataset dan menjalankan inferensi padanya.
Hasilnya bagus tetapi tidak sepenuhnya akurat. Tanda pagar tidak diperlukan. Untuk hasil optimal, kita perlu melatih model pada dataset lengkap dengan setidaknya 3 epoch.
10. Menyimpan model dan tokenizer
Mari simpan model secara lokal lalu dorong ke Hugging Face Hub. Untuk mengunggah model ke server Hugging Face, kita perlu masuk menggunakan token Hugging Face kita.
Jelajahi dunia transformasional Hugging Face, oasis open-source komunitas AI untuk machine learning dan large language model (LLM), dengan membaca blog Apa itu Hugging Face? Oasis Open-Source Komunitas AI.
Setelah itu, simpan model dan tokenizer secara lokal.
Lalu gunakan
push_to_hubuntuk menyimpan model di Hugging Face hub.Perintah di atas akan membuat repositori model baru dan mendorong semua file ke Hugging Face.
Sumber: kingabzpro/llama_3.2_vision_amazon_product
Jika Anda mengalami masalah saat menjalankan kode di atas, silakan merujuk ke notebook Kaggle: Fine-tuning Llama 3.2 Vision on Amazon Dataset
Kesimpulan
Fine-tuning model Llama 3.2 Vision membuka dunia kemungkinan baru, khususnya pada skenario di mana gambar dan teks dibutuhkan untuk memberikan hasil yang relevan dan akurat. Dengan melakukan fine-tuning pada dataset kustom, kita dapat meningkatkan kinerja dan menyesuaikan gaya untuk aplikasi seperti Visual Question Answering (VQA), Document VQA (DocVQA), Image Captioning, dan Image-Text Retrieval.
Dalam tutorial ini, kita mempelajari secara mendalam model Llama 3.2 Vision. Kita juga melakukan fine-tuning varian 11B dari model tersebut pada dataset deskripsi produk Amazon untuk membangun penghasil deskripsi produk yang sangat terpersonalisasi yang mengadopsi gaya yang diinginkan dan memberikan deskripsi produk yang akurat.
Langkah berikutnya dalam perjalanan Anda adalah mempelajari cara membangun aplikasi AI dan menerapkannya ke cloud menggunakan image Docker dengan mengikuti panduan: Cara Menerapkan Aplikasi LLM Menggunakan Docker: Panduan Langkah demi Langkah.