1. Pengantar
Mengapa penyesuaian penting
Model dasar dilatih untuk tujuan umum dan terkadang tidak melakukan tugas sebagaimana mestinya. Hal ini mungkin terjadi karena tugas yang ingin Anda lakukan dengan model adalah tugas khusus yang sulit diajarkan untuk model hanya dengan menggunakan desain perintah. Dalam kasus ini, Anda dapat menggunakan penyesuaian model untuk meningkatkan performa model dalam tugas tertentu. Penyesuaian model juga dapat membantu mematuhi persyaratan output tertentu saat tidak tersedia cukup petunjuk. Model bahasa besar (LLM) dapat memiliki banyak informasi dan dapat melakukan banyak tugas, tetapi hanya unggul jika diberi pelatihan khusus. Penyesuaian dapat melatih LLM, sehingga Anda dapat menyesuaikan LLM terlatih untuk kebutuhan spesifik Anda.
Dalam codelab ini, Anda akan mempelajari cara melakukan penyesuaian menggunakan pendekatan penyesuaian yang diawasi untuk model LLM.
Penyesuaian yang diawasi akan meningkatkan performa model dengan mengajarkan keterampilan baru. Data yang berisi ratusan contoh berlabel digunakan untuk mengajarkan model guna meniru perilaku atau tugas yang diinginkan. Kita akan memberikan set data berlabel untuk teks input (perintah) dan teks output (respons) untuk mengajari model cara menyesuaikan respons untuk kasus penggunaan spesifik kita.
Informasi selengkapnya tentang penyesuaian model tersedia di sini.
Yang akan Anda bangun
Kasus penggunaan: Membuat judul untuk artikel berita
Misalkan Anda ingin membuat judul artikel berita secara otomatis. Dengan Vertex AI, Anda dapat menyesuaikan LLM yang menghasilkan judul ringkasan yang sesuai dalam gaya tertentu dan menyesuaikan judul sesuai dengan pedoman saluran berita.
Dalam codelab ini, Anda akan melakukan hal berikut:
- Gunakan
BBC FULLTEXT DATA(disediakan oleh Set Data Publik BigQuerybigquery-public-data.bbc_news.fulltext). - Sesuaikan LLM (
text-bison@002) ke model yang disesuaikan baru bernama "bbc-news-summary-tuned" dan bandingkan hasilnya dengan respons dari model dasar. File JSONL contoh tersedia untuk codelab ini di repositori. Anda dapat mengupload file ke Bucket Cloud Storage dan menjalankan langkah-langkah penyesuaian berikut: - Siapkan data Anda: Mulailah dengan set data artikel berita dan judul yang sesuai, seperti set data BBC News yang digunakan dalam contoh kode.
- Menyesuaikan model terlatih: Pilih model dasar seperti "
text-bison@002" dan sesuaikan dengan data berita Anda menggunakan Vertex AI SDK untuk Python. - Evaluasi hasilnya: Bandingkan performa model yang disesuaikan dengan model dasar untuk melihat peningkatan kualitas pembuatan judul.
- Deploy dan gunakan model Anda: Sediakan model yang telah di-fine-tune melalui endpoint API dan mulai buat judul untuk artikel baru secara otomatis.
2. Sebelum memulai
- Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
- Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.
- Buka Notebook Colab dan login ke akun yang sama dengan akun Google Cloud aktif Anda saat ini.
3. Menyesuaikan model bahasa besar
Codelab ini menggunakan Vertex AI SDK untuk Python guna menyempurnakan model. Anda juga dapat melakukan penyesuaian menggunakan opsi lainnya — HTTP, perintah CURL, Java SDK, Konsol.
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: Instal dan Impor dependensi
!pip install google-cloud-aiplatform
!pip install --user datasets
!pip install --user google-cloud-pipeline-components
Ikuti langkah-langkah lainnya seperti yang ditunjukkan dalam 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 YOUR_BUCKET dengan bucket Anda dan upload file data pelatihan contoh TRAIN.jsonl ke bucket tersebut. Data contoh telah disediakan untuk kasus penggunaan ini di 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:

6. Langkah 3: Menyesuaikan model bahasa besar
Anda dapat men-tuning model bahasa besar apa pun pada tahap ini (berdasarkan ketersediaan dukungan) . Namun, dalam cuplikan ini, kita menyesuaikan model yang telah dilatih sebelumnya "text-bison@002" dengan frame data yang memiliki data pelatihan yang kita muat pada 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 memerlukan waktu beberapa jam. Anda dapat melacak progres penyesuaian menggunakan link tugas pipeline dalam hasil.
7. Langkah 4: Lakukan prediksi dengan model baru yang telah disesuaikan
Setelah tugas penyesuaian selesai, Anda akan dapat melakukan prediksi dengan model baru. Untuk memprediksi dengan model yang baru di-tuning:
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:

Untuk membuat prediksi 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:

Meskipun kedua judul yang dihasilkan terlihat sesuai, judul pertama (yang dihasilkan dengan model yang di-fine-tune) lebih sesuai dengan gaya judul yang digunakan dalam set data yang dimaksud.
Memuat model yang telah disesuaikan
Mungkin lebih mudah untuk memuat model yang baru saja Anda sesuaikan. Namun, ingatlah bahwa pada langkah 3, fungsi ini dipanggil dalam cakupan kode itu sendiri sehingga masih menyimpan model yang disesuaikan dalam variabel tuned_model. Namun, bagaimana jika Anda ingin memanggil model yang disesuaikan pada masa lalu?
Untuk melakukannya, Anda dapat memanggil metode get_tuned_model() di LLM dengan URL ENDPOINT lengkap dari model yang telah di-deploy dan disesuaikan 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 kesesuaiannya dengan perintah yang diberikan. Evaluasi model membantu mengidentifikasi area yang perlu ditingkatkan, mengoptimalkan performa model, dan memastikan bahwa teks yang dihasilkan memenuhi standar kualitas dan kegunaan yang diinginkan. Baca selengkapnya di dokumentasi. Untuk saat ini, kita akan melihat cara mendapatkan beberapa metrik evaluasi pada model yang di-fine-tune dan membandingkannya dengan model dasar.
- Muat EVALUATION dataset:
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/EVALUATE.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
- Tentukan spesifikasi evaluasi untuk tugas peringkasan teks pada model yang telah disesuaikan.
task_spec = EvaluationTextSummarizationSpec(
task_name = "summarization",
ground_truth_data=df
)
Langkah ini akan memerlukan waktu beberapa menit hingga selesai. Anda dapat melacak progres menggunakan link tugas pipeline dalam hasil. Setelah selesai, Anda akan melihat hasil evaluasi berikut:

Metrik rougeLSum dalam hasil evaluasi menentukan skor ROUGE-L untuk ringkasan. ROUGE-L adalah metrik berbasis perolehan yang mengukur tumpang-tindih antara ringkasan dan ringkasan referensi. Skor ini dihitung dengan mengambil subsekuens umum terpanjang (LCS) antara dua ringkasan dan membaginya dengan panjang ringkasan referensi.
Skor rougeLSum dalam ekspresi yang diberikan adalah 0,36600753600753694, yang berarti bahwa ringkasan memiliki tumpang-tindih 36,6% dengan ringkasan referensi.
Jika menjalankan langkah evaluasi pada model dasar, Anda akan melihat bahwa skor ringkasan relatif lebih tinggi untuk model yang di-fine-tune.
Anda dapat menemukan hasil evaluasi di direktori output Cloud Storage yang Anda tentukan saat membuat tugas evaluasi. Nama filenya adalah evaluation_metrics.json. Untuk model yang disesuaikan, Anda juga dapat melihat hasil evaluasi di konsol Google Cloud pada halaman Model Registry Vertex AI.
9. Pertimbangan penting
- Dukungan model: Selalu periksa dokumentasi model untuk mengetahui kompatibilitas terbaru.
- Pengembangan cepat: Bidang LLM berkembang pesat. Model yang lebih baru dan lebih canggih berpotensi mengungguli model yang di-fine-tune dan dibangun di atas model dasar yang lebih lama. Kabar baiknya, Anda dapat menerapkan teknik penyesuaian 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 memperkenalkan matriks dekomposisi berperingkat rendah yang dapat dilatih ke dalam lapisan model terlatih yang ada. Baca selengkapnya di sini. Alih-alih memperbarui semua parameter LLM yang 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 diperkenalkan selama penyesuaian.
10. Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam codelab ini, ikuti langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Manage resources.
- Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
- Atau, Anda dapat membuka Model Registry, membuka tab deployment dan pengujian model, membatalkan deployment endpoint, dan menghapus model yang di-deploy dan di-tune.
11. Selamat
Selamat! Anda telah berhasil menggunakan Vertex AI untuk menyesuaikan model LLM. Penyesuaian 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 bereksperimen dengan contoh kode untuk merasakan langsung penyesuaian dan evaluasi. Pertimbangkan bagaimana LLM yang telah disesuaikan dapat memenuhi kebutuhan spesifik Anda, mulai dari menghasilkan teks pemasaran yang ditargetkan hingga meringkas dokumen yang kompleks atau menerjemahkan bahasa dengan nuansa budaya. Manfaatkan rangkaian alat dan layanan komprehensif yang ditawarkan oleh Vertex AI untuk membuat, melatih, mengevaluasi, dan men-deploy model yang telah di-fine-tune dengan mudah.