Tentang codelab ini
1. Pengantar
Mengapa penyesuaian itu penting
Model dasar dilatih untuk tujuan umum dan terkadang tidak melakukan tugas sebagaimana mestinya. Hal ini mungkin karena tugas yang Anda inginkan untuk dilakukan 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 untuk tugas tertentu. Penyesuaian model juga dapat membantu mematuhi persyaratan output tertentu saat petunjuk tidak memadai. Model bahasa besar (LLM) dapat memiliki informasi dalam jumlah besar dan dapat melakukan banyak tugas, tetapi model ini hanya unggul jika diberikan 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 terpantau untuk model LLM.
Penyesuaian yang diawasi 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 menyediakan set data berlabel untuk teks input (perintah) dan teks output (respons) untuk mengajarkan model cara 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 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 telah disesuaikan baru yang disebut "bbc-news-summary-tuned
" dan bandingkan hasilnya dengan respons dari model dasar. Contoh file JSONL tersedia untuk codelab ini di repositori. Anda dapat mengupload file ke Bucket Cloud Storage dan menjalankan langkah-langkah penyesuaian berikut: - Siapkan data Anda: Mulai dengan set data artikel berita dan judulnya 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 hasil: Bandingkan performa model yang telah disesuaikan dengan model dasar untuk melihat peningkatan kualitas pembuatan judul.
- Men-deploy dan menggunakan model: Sediakan model yang telah disesuaikan 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 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 menyesuaikan model. Anda juga dapat melakukan penyesuaian menggunakan opsi lainnya — HTTP, perintah CURL, Java SDK, Konsol.
Anda dapat menyesuaikan dan mengevaluasi model untuk respons yang disesuaikan dalam 5 langkah. Anda dapat melihat kode lengkapnya 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 contoh file data pelatihan 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 hal berikut:
6. Langkah 3: Menyesuaikan model bahasa besar
Anda dapat menyesuaikan model bahasa besar apa pun pada tahap ini (berdasarkan ketersediaan dukungan) . Namun, dalam cuplikan ini, kita akan menyesuaikan model terlatih "text-bison@002" dengan frame data 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 memerlukan waktu beberapa jam untuk diselesaikan. Anda dapat melacak progres penyesuaian menggunakan link tugas pipeline dalam hasil.
7. Langkah 4: Buat prediksi dengan model baru yang telah dioptimalkan
Setelah tugas penyesuaian selesai, Anda akan dapat melakukan prediksi dengan model baru. Untuk memprediksi dengan model baru yang telah 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:
Untuk memprediksi dengan model dasar (text-bison@002
) untuk 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 disesuaikan) lebih selaras 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, model 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 telah disesuaikan sebelumnya?
Untuk melakukannya, Anda dapat memanggil metode get_tuned_model() di LLM dengan URL ENDPOINT lengkap dari model yang telah dioptimalkan dan di-deploy dari Vertex AI Model Registry. Perhatikan bahwa dalam hal 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 dioptimalkan
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 penyelarasannya 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 telah disesuaikan dan membandingkannya dengan model dasar.
- Muat set data EVALUASI:
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 ringkasan teks pada model yang dioptimalkan.
task_spec = EvaluationTextSummarizationSpec(
task_name = "summarization",
ground_truth_data=df
)
Langkah ini akan memerlukan waktu beberapa menit. Anda dapat melacak progres menggunakan link tugas pipeline dalam hasilnya. Setelah selesai, Anda akan melihat hasil evaluasi berikut:
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 suburutan umum terpanjang (LCS) antara dua ringkasan dan membaginya dengan panjang ringkasan referensi.
Skor rougeLSum
dalam ekspresi yang diberikan adalah 0,36600753600753694, yang berarti ringkasan memiliki tumpang-tindih 36,6% dengan ringkasan referensi.
Jika menjalankan langkah evaluasi pada model dasar pengukuran, Anda akan mengamati bahwa skor ringkasan relatif lebih tinggi untuk model yang dioptimalkan.
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 yang cepat: Bidang LLM berkembang dengan cepat. Model yang lebih baru dan lebih canggih berpotensi mengungguli model yang disesuaikan dengan baik yang dibuat di basis 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 menyesuaikan LLM secara efisien. Hal ini dilakukan dengan memperkenalkan matriks dekomposisi peringkat rendah yang dapat dilatih ke dalam lapisan model terlatih yang ada. Baca selengkapnya di sini. Daripada 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 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 deploy dan uji model, lalu membatalkan deployment endpoint dan menghapus model yang di-deploy dan dioptimalkan.
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 bereksperimenlah dengan kode contoh untuk merasakan penyesuaian dan evaluasi secara langsung. Pertimbangkan bagaimana LLM yang disesuaikan dapat memenuhi kebutuhan spesifik Anda, mulai dari membuat 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 disesuaikan dengan mudah.