1 poin oleh GN⁺ 2024-01-23 | 1 komentar | Bagikan ke WhatsApp

Melakukan fine-tuning LLM secara efisien dengan teknik LoRA

  • LoRA (Low-Rank Adaptation) adalah teknik untuk melakukan fine-tuning LLM (Large Language Models) dengan lebih efisien.
  • Alih-alih menyesuaikan seluruh parameter jaringan saraf, LoRA hanya memperbarui sejumlah kecil matriks berperingkat rendah.

Mengikuti contoh kode

  • Semua kode yang muncul dalam artikel dapat ditemukan di Studio pendamping.
  • Klik "Run" untuk mendapatkan salinan penuh dari lingkungan kode dan bersiap menjalankan file kode.

Memahami LoRA

  • LLM yang telah dipra-latih disebut model dasar karena sifatnya yang serbaguna untuk berbagai tugas.
  • Menyesuaikan LLM yang telah dipra-latih agar cocok dengan dataset atau tugas tertentu dilakukan melalui fine-tuning.
  • LoRA menawarkan alternatif yang lebih efisien dengan mengaproksimasi perubahan bobot layer selama pelatihan dalam bentuk low-rank.

Mengodekan LoRA dari scratch

  • Layer LoRA dapat diimplementasikan di PyTorch seperti berikut.
class LoRALayer(torch.nn.Module):
  def __init__(self, in_dim, out_dim, rank, alpha):
    super().__init__()
    self.A = torch.nn.Parameter(...)
    self.B = torch.nn.Parameter(...)
    self.alpha = alpha

  def forward(self, x):
    return self.alpha * (x @ self.A @ self.B)
  • LoRA terutama diterapkan pada layer linear (feedforward) dalam jaringan saraf.

Fine-tuning dengan LoRA -- contoh praktik

  • LoRA dapat diterapkan pada berbagai jenis jaringan saraf, bukan hanya GPT atau model pembangkit gambar.
  • Disediakan contoh praktik yang menerapkan model BERT kecil pada tugas klasifikasi teks.

Perbandingan dengan fine-tuning tradisional

  • Dengan pengaturan dasar LoRA, dicapai akurasi pengujian 89.44%.
  • Dibandingkan dengan fine-tuning tradisional, LoRA menunjukkan performa yang lebih baik dengan parameter yang lebih sedikit.

Mengoptimalkan pengaturan LoRA

  • Performa dapat ditingkatkan dengan menyesuaikan pengaturan hyperparameter LoRA.
  • Berbagai kombinasi hyperparameter dapat diuji untuk menemukan pengaturan yang optimal.

Kesimpulan

  • Dengan mengodekan LoRA dari scratch, dipelajari bahwa saat melakukan fine-tuning model DistilBERT untuk tugas klasifikasi, LoRA menunjukkan performa yang lebih baik daripada hanya melakukan fine-tuning pada layer terakhir model.

Opini GN⁺

  • LoRA merupakan teknik penting untuk melakukan fine-tuning model bahasa berskala besar secara efisien, dan memiliki potensi untuk mengurangi biaya komputasi seiring membesarnya ukuran model.
  • Melalui contoh nyata, pembaca dapat memahami cara menerapkan LoRA dan mengembangkan kemampuan untuk menggunakannya pada masalah dunia nyata.
  • Proses mengatur hyperparameter LoRA untuk mengoptimalkan performa menunjukkan pendekatan umum dalam tuning model machine learning.

1 komentar

 
GN⁺ 2024-01-23
Pendapat Hacker News
  • Saya mengikuti perkembangan teknologinya melalui LLMs 101 dari Maxime Labonne. Masih terasa aneh bahwa di bidang ilmu komputer kita masih mengatakan, "kita tidak benar-benar tahu bagaimana hyperparameter memengaruhi hasil, jadi coba saja berbagai nilai dan cari yang terbaik."
  • LoRA dan LoRa itu berbeda, dan ada keluhan tentang kebingungan karena memakai singkatan yang sama.
  • Masih belum jelas kapan fine-tuning seharusnya dilakukan. Dulu saya menganggapnya untuk mengubah perilaku model, tetapi belakangan ini beberapa perusahaan tampaknya menggunakan fine-tuning untuk menambahkan pengetahuan.
  • Ada pertanyaan tentang use case utama untuk fine-tuning.
  • Ini artikel yang bagus tentang LoRA. Saya bukan ahli di bidang ini, tetapi saya memahami bahwa dalam paper aslinya LoRA hanya diterapkan pada lapisan dense terakhir. Perlu dicatat bahwa metode ini dipakai di QLoRA dan tampaknya menghasilkan efek yang menarik.
  • Saya tidak yakin benar-benar memahami mengapa LoRA bekerja. Menerapkannya pada lapisan terakhir masuk akal bagi saya, tetapi saya tidak paham logika menerapkannya berulang kali pada setiap lapisan linear. Apakah ada yang bisa menjelaskan intuisinya?
  • Saya berharap protokol LoRa nirkabel bersifat open source.
  • Saya sempat mengira ini akan membahas protokol radio LoRa, tetapi tetap menarik juga.
  • Saya menambahkan latihan untuk mengimplementasikan forward pass LoRA dari nol. Ide LoRA itu indah dan implementasinya cukup sederhana.
  • Ada pertanyaan tentang library paling populer untuk fine-tuning.
  • Saya lebih suka pendekatan berbasis konfigurasi dari Axolotl daripada memulai dari nol. Axolotl mendukung mistral, llama-2, dan banyak teknik terbaru.
  • Saya fokus pada fine-tuning yang berpusat pada data, dan alih-alih mempelajari LoRA dari nol, saya memilih fokus pada pengumpulan dan kurasi data fine-tuning.