Menyesuaikan Model Bahasa Besar: Cara Vertex AI Meningkatkan LLM

1. Pengantar

Mengapa penyesuaian itu penting

Model dasar dilatih untuk tujuan umum dan terkadang tidak melakukan tugas seperti yang Anda inginkan. Hal ini mungkin karena tugas yang Anda ingin model lakukan adalah tugas khusus yang sulit untuk mengajarkan model dengan hanya menggunakan prompt design. Dalam kasus ini, Anda dapat menggunakan penyesuaian model untuk meningkatkan performa model untuk tugas tertentu. Penyesuaian model juga dapat membantu mematuhi persyaratan output tertentu jika petunjuk tidak memadai. Model bahasa besar (LLM) dapat memiliki informasi dalam jumlah besar dan dapat melakukan banyak tugas, tetapi hanya unggul jika diberi pelatihan khusus. Fine-tuning bisa melatih LLM, sehingga Anda bisa menyesuaikan LLM terlatih untuk kebutuhan spesifik Anda.

Dalam codelab ini, Anda akan mempelajari cara melakukan fine-tuning menggunakan pendekatan supervised tuning untuk model LLM.

supervised tuning meningkatkan performa model dengan mengajarkan keterampilan baru. Data yang berisi ratusan contoh berlabel digunakan untuk mengajari model agar meniru perilaku atau tugas yang diinginkan. Kita akan menyediakan set data berlabel untuk teks input (prompt) dan teks output (respons) guna mengajari model untuk menyesuaikan respons untuk kasus penggunaan tertentu.

Informasi selengkapnya tentang penyesuaian model tersedia di sini.

Yang akan Anda bangun

Kasus penggunaan: Membuat judul untuk artikel berita

Anggaplah Anda ingin secara otomatis membuat judul untuk artikel berita. Dengan menggunakan Vertex AI, Anda dapat meningkatkan kualitas LLM yang menghasilkan judul ringkasan yang sesuai dengan gaya tertentu dan menyesuaikan judul sesuai panduan channel berita.

Dalam codelab ini, Anda akan melakukan hal berikut:

  • Gunakan BBC FULLTEXT DATA (disediakan oleh Set Data Publik BigQuery bigquery-public-data.bbc_news.fulltext).
  • Menyesuaikan LLM (text-bison@002) ke model baru yang telah di-fine-tune yang disebut "bbc-news-summary-tuned" dan membandingkan hasilnya dengan respons dari model dasar. Contoh file JSONL tersedia untuk codelab ini di repositori. Anda dapat mengupload file tersebut ke Bucket Cloud Storage dan menjalankan langkah-langkah penyempurnaan berikut:
  • Siapkan data Anda: Mulailah dengan set data artikel berita dan judulnya yang sesuai, seperti set data BBC News yang digunakan dalam contoh kode.
  • Menyempurnakan model terlatih: Pilih model dasar seperti "text-bison@002" dan sesuaikan dengan data berita Anda menggunakan Vertex AI SDK untuk Python.
  • Evaluasi hasil: Bandingkan performa model yang telah disesuaikan dengan model dasar untuk melihat peningkatan kualitas pembuatan judul.
  • Deploy dan gunakan model Anda: Buat model yang telah disesuaikan tersedia melalui endpoint API dan mulai buat judul untuk artikel baru secara otomatis.

2. Sebelum memulai

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
  3. Buka Colab Notebook dan login ke akun yang sama dengan akun Google Cloud Anda yang aktif saat ini.

3. Menyesuaikan model bahasa besar

Codelab ini menggunakan Vertex AI SDK untuk Python guna meningkatkan kualitas model. Anda juga dapat melakukan fine-tuning menggunakan opsi lain — HTTP, perintah CURL, Java SDK, Console.

Anda dapat menyesuaikan dan mengevaluasi model untuk mendapatkan respons yang disesuaikan dalam 5 langkah. Anda dapat melihat kode lengkap dalam file llm_fine_tuning_supervised.ipynb dari repositori.

4. Langkah 1: Menginstal dan Mengimpor dependensi

!pip install google-cloud-aiplatform
!pip install --user datasets
!pip install --user google-cloud-pipeline-components

Ikuti langkah selanjutnya seperti yang ditunjukkan pada file .ipynb di repo. Pastikan Anda mengganti PROJECT_ID dan BUCKET_NAME dengan kredensial Anda.

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import warnings
warnings.filterwarnings('ignore')
import vertexai
vertexai.init(project=PROJECT_ID, location=REGION)
import kfp
import sys
import uuid
import json
import pandas as pd
from google.auth import default
from datasets import load_dataset
from google.cloud import aiplatform
from vertexai.preview.language_models import TextGenerationModel, EvaluationTextSummarizationSpec

5. Langkah 2: Siapkan dan muat data pelatihan

Ganti ANDA_BUCKET dengan bucket Anda, lalu upload contoh file data pelatihan TRAIN.jsonl ke dalamnya. Contoh data telah disediakan untuk kasus penggunaan ini dalam link yang disebutkan di atas.

json_url = 'https://storage.googleapis.com/YOUR_BUCKET/TRAIN.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)

Langkah ini akan menghasilkan hal berikut:

17274866af36a47c.pngS

6. Langkah 3: Sesuaikan model bahasa besar

Anda dapat men-tuning model bahasa besar apa pun pada saat ini (berdasarkan ketersediaan dukungan) . Namun, dalam cuplikan ini, kita menyesuaikan model terlatih "text-bison@002" dengan {i>dataframe<i} yang memiliki data pelatihan yang kita muat di langkah sebelumnya.:

model_display_name = 'bbc-finetuned-model' # @param {type:"string"}
tuned_model = TextGenerationModel.from_pretrained("text-bison@002")
tuned_model.tune_model(
training_data=df,
train_steps=100,
tuning_job_location="europe-west4",
tuned_model_location="europe-west4",
)

Langkah ini akan memakan waktu beberapa jam. Anda dapat melacak progres penyesuaian menggunakan link tugas pipeline di hasil.

7. Langkah 4: Buat prediksi dengan model baru yang telah disesuaikan

Setelah tugas fine tuning selesai, Anda akan dapat memprediksi dengan model baru Anda. Untuk memprediksi dengan model baru Anda yang disesuaikan:

response = tuned_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)

Anda akan melihat hasil berikut:

67061c36b7ba39b7.pngS

Untuk memprediksi dengan model dasar (text-bison@002) sebagai perbandingan, jalankan perintah berikut:

base_model = TextGenerationModel.from_pretrained("text-bison@002")
response = base_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)

Anda akan melihat hasil berikut:

22ec58e4261405d6.pngS

Meskipun kedua judul yang dihasilkan terlihat sesuai, judul pertama (dihasilkan dengan model yang telah di-fine-tune) lebih selaras dengan gaya judul yang digunakan dalam set data yang dimaksud.

Memuat model yang di-fine-tune

Mungkin akan lebih mudah untuk memuat model yang baru saja Anda sesuaikan. Namun ingat di langkah 3, model tersebut dipanggil dalam cakupan kode itu sendiri sehingga masih menyimpan model yang di-tuning dalam variabel Tuned_model. Namun, bagaimana jika Anda ingin memanggil model yang telah disesuaikan sebelumnya?

Untuk melakukannya, Anda dapat memanggil metode get_tuned_model() di LLM dengan URL ENDPOINT lengkap dari model yang disesuaikan yang di-deploy dari Vertex AI Model Registry. Perhatikan bahwa dalam kasus ini, Anda memasukkan PROJECT_NUMBER dan MODEL_NUMBER, bukan ID masing-masing.

tuned_model_1 = TextGenerationModel.get_tuned_model("projects/<<PROJECT_NUMBER>>/locations/europe-west4/models/<<MODEL_NUMBER>>")
print(tuned_model_1.predict("YOUR_PROMPT"))

8. Langkah 5: Evaluasi model baru yang telah disesuaikan

Evaluasi adalah aspek penting dalam menilai kualitas dan relevansi respons yang dihasilkan. Proses ini melibatkan pemeriksaan output dari model bahasa generatif untuk menentukan koherensi, akurasi, dan keselarasannya dengan perintah yang diberikan. Evaluasi model membantu mengidentifikasi area yang perlu ditingkatkan, mengoptimalkan performa model, dan memastikan bahwa teks yang dihasilkan memenuhi standar yang diinginkan untuk kualitas dan kegunaan. Baca selengkapnya di dokumentasi. Untuk saat ini, kita akan melihat cara mendapatkan beberapa metrik evaluasi pada model yang telah di-fine-tune dan membandingkannya dengan model dasar.

  1. Muat set data EVALUATION:
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/EVALUATE.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
  1. Tentukan spesifikasi evaluasi untuk tugas ringkasan teks pada model yang telah disesuaikan.
task_spec = EvaluationTextSummarizationSpec(
 task_name = "summarization",
 ground_truth_data=df
)

Langkah ini akan memerlukan waktu beberapa menit sampai selesai. Anda dapat melacak progres menggunakan link tugas pipeline di hasil. Setelah selesai, Anda akan melihat hasil evaluasi berikut:

387843d6c970e02.png

Metrik rougeLSum dalam hasil evaluasi menentukan skor ROUGE-L untuk ringkasan. ROUGE-L adalah metrik berbasis recall yang mengukur tumpang-tindih antara ringkasan dan ringkasan referensi. Nilai ini dihitung dengan mengambil suburut umum terpanjang (LCS) di antara dua ringkasan dan membaginya dengan panjang ringkasan referensi.

Skor rougeLSum dalam ekspresi yang diberikan adalah 0,36600753600753694, yang berarti ringkasan tersebut memiliki tumpang-tindih 36,6% dengan ringkasan referensi.

Jika menjalankan langkah evaluasi pada model dasar pengukuran, Anda akan melihat bahwa skor ringkasan relatif lebih tinggi untuk model yang sudah dioptimalkan.

Anda dapat menemukan hasil evaluasi di direktori output Cloud Storage yang Anda tentukan saat membuat tugas evaluasi. Filenya bernama evaluation_metrics.json. Untuk model yang telah disesuaikan, Anda juga dapat melihat hasil evaluasi di Konsol Google Cloud di halaman Model Registry Vertex AI.

9. Pertimbangan penting

  • Dukungan model: Selalu periksa dokumentasi model untuk mengetahui kompatibilitas terbaru.
  • Pengembangan cepat: Bidang LLM berkembang dengan cepat. Model yang lebih baru dan lebih andal berpotensi mengungguli model yang telah ditingkatkan kualitasnya yang dibangun pada basis yang lebih lama. Kabar baiknya adalah Anda dapat menerapkan teknik fine-tuning ini ke model yang lebih baru saat kemampuan tersebut tersedia.
  • LoRA: LoRA adalah teknik untuk melakukan fine-tuning LLM secara efisien. Hal ini dilakukan dengan memasukkan matriks dekomposisi yang dapat dilatih dan diberi peringkat rendah ke dalam lapisan model terlatih yang ada. Baca selengkapnya di sini. Alih-alih memperbarui semua parameter LLM besar, LoRA mempelajari matriks yang lebih kecil yang ditambahkan ke atau dikalikan dengan matriks bobot model asli. Hal ini secara signifikan mengurangi jumlah parameter tambahan yang dimasukkan selama fine-tuning.

10. Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam codelab ini, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Manage resource.
  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
  4. Atau, Anda dapat membuka Model Registry, membuka tab deployment dan pengujian model, lalu membatalkan deployment endpoint dan menghapus model yang telah di-deploy.

11. Selamat

Selamat! Anda telah berhasil menggunakan Vertex AI untuk meningkatkan kualitas model LLM. Fine-tuning adalah teknik canggih yang memungkinkan Anda menyesuaikan LLM dengan domain dan tugas Anda. Dengan Vertex AI, Anda memiliki alat dan resource yang diperlukan untuk meningkatkan kualitas model secara efisien dan efektif.

Jelajahi repositori GitHub dan bereksperimenlah dengan kode contoh untuk merasakan pengalaman penyesuaian dan evaluasi secara langsung. Pertimbangkan bagaimana LLM yang telah disesuaikan dapat memenuhi kebutuhan spesifik Anda, mulai dari membuat materi pemasaran bertarget hingga meringkas dokumen yang kompleks atau menerjemahkan bahasa dengan nuansa budaya. Manfaatkan rangkaian alat dan layanan komprehensif yang ditawarkan oleh Vertex AI untuk membangun, melatih, mengevaluasi, dan men-deploy model yang telah disesuaikan dengan mudah.