1. Pengenalan tentang Fine-tuning

1.1. Definisi dan Keunggulan Fine-tuning Model

Fine-tuning adalah konsep dalam pembelajaran mendalam yang mengacu pada proses melanjutkan pelatihan berdasarkan model yang telah di-pre-train untuk beradaptasi dengan tugas atau dataset tertentu. Model yang telah di-pre-train telah dilatih dengan jumlah data yang besar dan telah mempelajari representasi fitur yang kaya. Melalui fine-tuning, kinerja model untuk tugas tertentu dapat ditingkatkan lebih lanjut berdasarkan fondasi ini.

Keunggulan fine-tuning dibandingkan dengan melatih model dari awal terutama mencakup:

  1. Penghematan Waktu dan Sumber Daya: Model yang telah di-pre-train menghilangkan waktu dan sumber daya komputasi yang diperlukan untuk melatih model dari awal, terutama signifikan untuk model-model besar dan tugas-tugas kompleks.
  2. Efisiensi Data: Fine-tuning biasanya membutuhkan jumlah data yang lebih sedikit yang dianotasi untuk mencapai hasil yang baik, terutama di domain-domain dengan data yang langka.
  3. Transfer Learning: Model-model yang telah di-pre-train belajar dari beragam data, dan fine-tuning dapat mentransfer pengetahuan ini ke tugas-tugas tertentu, meningkatkan kemampuan generalisasi.
  4. Peningkatan Kinerja: Fine-tuning memungkinkan model untuk lebih baik beradaptasi dengan persyaratan tugas tertentu, membantu meningkatkan kualitas model dan mengurangi tingkat kesalahan.

Sebagai contoh, dengan memanfaatkan API OpenAI, pengguna dapat menyesuaikan model GPT melalui fine-tuning untuk mendapatkan hasil yang lebih berkualitas sambil menghemat biaya yang terkait dengan prompt yang panjang dan mengurangi laten.

1.2. Kasus Aplikasi Praktis

Fine-tuning telah terbukti sangat efektif dalam berbagai skenario praktis. Misalnya:

  • Penyesuaian Gaya dan Tone: Melalui fine-tuning, tanggapan chatbot dapat disesuaikan dengan gaya atau tone spesifik, seperti formal, humoris, atau sesuai dengan bahasa dari industri tertentu.
  • Meningkatkan Keandalan: Pada aplikasi-aplikasi sensitif seperti konsultasi medis atau saran hukum, fine-tuning dapat mengurangi ketidakpahaman atau tanggapan yang tidak akurat, dengan demikian meningkatkan keandalan secara keseluruhan.
  • Penanganan Prompt yang Kompleks: Beberapa tugas memerlukan pemrosesan input pengguna yang kompleks, dan fine-tuning dapat membantu model untuk lebih memahami skenario-skenario yang rumit ini dan memberikan tanggapan yang akurat.
  • Peningkatan Kinerja untuk Tugas-Tugas Tertentu: Untuk tugas-tugas yang sulit untuk dijelaskan melalui satu prompt, seperti transfer gaya dalam generasi teks atau menghasilkan teks mengenai topik tertentu, fine-tuning dapat secara signifikan meningkatkan kinerja model.

Melalui kasus-kasus ini, kita dapat melihat bahwa fine-tuning memungkinkan model untuk lebih baik beradaptasi dengan skenario aplikasi spesifik, memberikan layanan yang lebih akurat dan personal.

2. Kapan Menggunakan Fine-tuning

2.1. Menganalisis Persyaratan Tugas

Fine-tuning adalah strategi yang digunakan ketika ditentukan bahwa model-model umum yang ada tidak dapat memenuhi persyaratan spesifik. Fine-tuning mungkin diperlukan ketika tugas menunjukkan karakteristik-karakteristik berikut:

  • Persyaratan spesial dalam hal gaya, tone, format, atau aspek kualitatif lainnya
  • Perlu meningkatkan keandalan dalam menghasilkan output yang diinginkan
  • Pendekatan spesifik yang diperlukan saat menangani berbagai kasus detail
  • Keterampilan atau tugas yang sulit untuk dijelaskan dengan jelas melalui prompt

Langkah-langkah untuk menentukan kebutuhan fine-tuning umumnya meliputi:

  1. Mencoba "rekayasa prompt," menyesuaikan cara input prompt disajikan untuk mengoptimalkan hasil.
  2. Menganalisis efektivitas model-model yang ada untuk menentukan kebutuhan fine-tuning.
  3. Jika keputusan untuk fine-tuning sudah dibuat, menyiapkan dataset yang relevan untuk pelatihan lebih lanjut.

2.2. Perbandingan antara Fine-tuning dan Rekayasa Prompt

Fine-tuning dan rekayasa prompt adalah dua strategi yang berbeda untuk meningkatkan kinerja model. Rekayasa prompt mengacu pada membimbing model untuk menghasilkan tanggapan yang diharapkan dengan prompt-prompt yang dirancang dengan hati-hati, tanpa memodifikasi model itu sendiri. Ini sering menjadi langkah pertama dalam mencari peningkatan kinerja, karena memiliki siklus umpan balik yang cepat dan tidak memerlukan data pelatihan.

Namun, dalam kasus-kasus tertentu, bahkan dengan prompt-prompt yang dirancang dengan hati-hati, model mungkin masih kesulitan untuk mencapai hasil yang diharapkan. Dalam skenario-skenario seperti itu, fine-tuning menjadi pilihan yang diperlukan untuk meningkatkan kinerja model. Dengan menyediakan sejumlah besar contoh untuk model belajar, fine-tuning dapat mencapai hasil yang lebih baik untuk tugas-tugas yang berbeda dibandingkan dengan rekayasa prompt saja.

3. Model yang Mendukung Penyetelan Fein

OpenAI menyediakan berbagai model yang mendukung penyetelan fein, termasuk gpt-3.5-turbo-1106 (direkomendasikan), gpt-3.5-turbo-0613, babbage-002, davinci-002, dan secara eksperimental dapat diakses gpt-4-0613. Model-model ini dapat ditingkatkan melalui penyetelan fein untuk menyesuaikan dengan kebutuhan pengguna tertentu.

Penyetelan fein tidak hanya berlaku untuk kumpulan data baru, namun pengguna juga dapat melanjutkan penyetelan fein pada model-model yang sebelumnya telah disetel. Ini sangat berguna ketika data lebih banyak didapatkan dan ada kebutuhan untuk lebih mengoptimalkan model tanpa mengulangi langkah-langkah pelatihan sebelumnya.

Bagi sebagian besar pengguna, gpt-3.5-turbo menjadi pilihan yang dipilih karena hasilnya yang memuaskan dan kemudahan penggunaannya. Mengingat adanya perbaikan terus-menerus dan kebutuhan pengguna tertentu, OpenAI mungkin akan terus memperbarui dan memperluas jangkauan model-model yang mendukung penyetelan fein.

4. Menyiapkan Data Pelatihan

4.1. Format Dataset

Untuk melakukan Penyetelan Fein, Anda perlu menyiapkan dataset yang memenuhi persyaratan format yang ditentukan. Biasanya, dataset ini berisi serangkaian input dan keluaran yang diharapkan. API Penyetelan Fein dari OpenAI mendukung dua format data utama: model dialog dan pasangan pertanyaan-jawaban sederhana.

Format dataset Model Dialog umumnya digunakan untuk model gpt-3.5-turbo. Setiap contoh diorganisir dalam bentuk percakapan, di mana setiap pesan memiliki peran, konten, dan nama opsional. Struktur data contoh adalah sebagai berikut:

{
  "messages": [
    {"role": "system", "content": "Anda adalah asisten yang membantu."},
    {"role": "user", "content": "Bagaimana cuacanya hari ini?"},
    {"role": "assistant", "content": "Cuaca hari ini cerah dan cocok untuk pergi keluar."}
  ]
}

Setiap kasus harus diformat sebagai file dengan format JSON Lines (.jsonl), di mana setiap baris mewakili sampel pelatihan, misalnya:

{"messages": [{"role": "system", "content": "Marv adalah chatbot faktual yang juga sarkastik."}, {"role": "user", "content": "Apa ibukota Perancis?"}, {"role": "assistant", "content": "Paris, seolah-olah semua orang tidak tahu itu sudah."}]}
{"messages": [{"role": "system", "content": "Marv adalah chatbot faktual yang juga sarkastik."}, {"role": "user", "content": "Siapa yang menulis 'Romeo dan Juliet'?"}, {"role": "assistant", "content": "Oh, hanya seseorang bernama William Shakespeare. Pernah dengar tentang dia?"}]}
{"messages": [{"role": "system", "content": "Marv adalah chatbot faktual yang juga sarkastik."}, {"role": "user", "content": "Seberapa jauhnya Bulan dari Bumi?"}, {"role": "assistant", "content": "Sekitar 384.400 kilometer. Memberi atau mengambil beberapa, seperti itu benar-benar penting."}]}

Format dataset Pasangan Pertanyaan-Jawaban Sederhana cocok untuk model-model seperti babbage-002 dan davinci-002. Formatnya lebih sederhana, terdiri dari pasangan prompt dan completion. Contoh sebagai berikut:

{
  "prompt": "Bagaimana cuacanya hari ini?",
  "completion": "Cuaca hari ini cerah dan cocok untuk pergi keluar."
}

Demikian pula, setiap sampel pelatihan menempati satu baris, misalnya:

{"prompt": "<teks prompt>", "completion": "<teks yang dihasilkan ideal>"}
{"prompt": "<teks prompt>", "completion": "<teks yang dihasilkan ideal>"}
{"prompt": "<teks prompt>", "completion": "<teks yang dihasilkan ideal>"}

Saat membuat data Penyetelan Fein, pertimbangkan setiap instruksi atau prompt yang diberikan dengan hati-hati untuk memastikan konsistensi antara contoh pelatihan dan mencakup sebanyak mungkin skenario penggunaan yang diharapkan.

4.2. Pembagian Data Pelatihan dan Pengujian

Setelah membuat dataset Penyetelan Fein, sangat penting untuk membagi dataset ke dalam set pelatihan dan pengujian dengan benar. Biasanya, dataset dibagi menjadi dua bagian, dengan mayoritas digunakan untuk melatih model (biasanya 70% hingga 90%) dan sisa bagian digunakan untuk pengujian (10% hingga 30%). Pembagian ini membantu memvalidasi kinerja model pada data yang belum terlihat dan secara ketat mengevaluasi kinerjanya.

Pembagian dataset bisa dilakukan secara manual atau dengan menulis kode untuk membagi, yang akan dijelaskan pada bagian-bagian selanjutnya tentang bagaimana mengevaluasi model menggunakan data set pengujian.

5. Membuat Model yang Telah Disetel Ulang

5.1. Memilih Model Pre-trained yang Tepat

Sebelum memulai proses fine-tuning, pemilihan model pre-trained yang tepat sangat penting untuk menjamin kesuksesan tugas. Berikut adalah beberapa saran untuk memilih model pre-trained yang sesuai:

  1. Jenis Tugas: Berdasarkan sifat tugas Anda, seperti pemahaman bahasa, generasi, atau menjawab pertanyaan khusus domain, pilih model yang paling cocok untuk tugas-tugas tersebut. Sebagai contoh, model gpt-3.5-turbo cocok untuk sebagian besar skenario karena seimbang dalam kinerja dan kemudahan penggunaan.

  2. Volume Data: Jika Anda memiliki data latihan yang relatif sedikit, Anda mungkin lebih memilih model yang lebih kecil seperti babbage-002, karena membutuhkan data yang lebih sedikit untuk penyetelan parameter.

  3. Persyaratan Kinerja: Untuk skenario yang membutuhkan pemrosesan tugas yang lebih kompleks dan halus, pertimbangkan memilih model yang lebih kuat seperti davinci-002.

  4. Pertimbangan Biaya: Model-model yang berbeda memiliki persyaratan komputasi dan penyimpanan yang berbeda. Biasanya, model yang lebih besar menimbulkan biaya yang lebih tinggi. Seimbangkan sesuai dengan anggaran dan persyaratan kinerja.

  5. Fitur Eksperimental: Model gpt-4-0613 saat ini masih dalam tahap eksperimental. Jika Anda ingin mencoba teknologi terbaru dan memiliki toleransi terhadap antarmuka eksperimental, pertimbangkan untuk mengajukan akses.

5.2. Proses Fine-tuning

Proses fine-tuning mencakup beberapa langkah seperti persiapan data, mengunggah file, membuat tugas pelatihan, dan memantau kemajuan. Berikut ini adalah rincian terperinci:

5.2.1. Persiapan Data

Persiapkan data latihan dan pengujian yang cukup sesuai dengan tugas target dan pastikan format data memenuhi persyaratan, seperti format JSON Lines (.jsonl). Silakan lihat bab-bab sebelumnya untuk detail konten.

5.2.2. Mengunggah Data

Unggah file data latihan melalui API File OpenAI, dengan menentukan tujuan file sebagai fine-tune, seperti yang ditunjukkan di bawah ini:

   curl https://api.openai.com/v1/files \
     -H "Authorization: Bearer $OPENAI_API_KEY" \
     -F purpose="fine-tune" \
     -F file="@mydata.jsonl"

Setelah unggah berhasil, Anda akan menerima ID file yang akan digunakan untuk tugas pelatihan model selanjutnya.

5.2.3. Membuat Tugas Pelatihan

Mulai tugas fine-tuning menggunakan SDK OpenAI atau alat CLI, dengan menentukan parameter dan model yang diperlukan. Sebagai contoh:

   from openai import OpenAI
   client = OpenAI()

   client.fine_tuning.jobs.create(
     training_file="file-abc123", 
     model="gpt-3.5-turbo"
   )

Parameter training_file menentukan ID file data pelatihan, dan parameter model menentukan model yang akan digunakan untuk pelatihan.

5.2.4. Memantau Tugas Pelatihan

Berikut ini merupakan contoh cara untuk meminta hasil pelatihan menggunakan Python:

from openai import OpenAI
client = OpenAI()

client.fine_tuning.jobs.list(limit=10)

client.fine_tuning.jobs.retrieve("ftjob-abc123")

client.fine_tuning.jobs.cancel("ftjob-abc123")

client.fine_tuning.jobs.list_events(fine_tuning_job_id="ftjob-abc123", limit=10)

client.models.delete("ft:gpt-3.5-turbo:acemeco:suffix:abc123")

6. Penyesuaian Parameter Selama Proses Fine-tuning

6.1 Memahami dan Menyesuaikan Hyperparameter

Hyperparameter adalah parameter yang ditetapkan sebelum pelatihan model, dan biasanya tidak dapat dipelajari dari data. Berikut adalah beberapa hyperparameter penting:

  • Jumlah Epoch (n_epochs): Ini menentukan berapa kali model Anda akan melalui seluruh dataset. Terlalu banyak epoch dapat menyebabkan overfitting, sementara terlalu sedikit dapat menyebabkan model tidak belajar dengan cukup.

  • Laju Pembelajaran (learning_rate_multiplier): Laju pembelajaran menentukan sejauh mana model memperbarui bobotnya setiap iterasi. Laju pembelajaran yang terlalu tinggi dapat menyebabkan ketidakstabilan dalam proses pembelajaran, sementara laju yang terlalu rendah dapat memperlambat proses pembelajaran.

  • Ukuran Batch (batch_size): Ukuran batch menentukan berapa banyak contoh pelatihan yang dipertimbangkan dalam setiap pembaruan model. Ukuran batch yang lebih besar membantu menstabilkan pelatihan tetapi dapat meningkatkan tekanan memori.

Penyesuaian hyperparameter biasanya memerlukan percobaan ulang untuk menemukan kombinasi parameter optimal.

Contoh inisiasi tugas fine-tuning dengan hyperparameter:

from openai import OpenAI
client = OpenAI()

client.fine_tuning.jobs.create(
  training_file="file-abc123",
  model="gpt-3.5-turbo",
  hyperparameters={
    "n_epochs":2
  }
)

Parameter hyperparameters digunakan untuk menyetel hyperparameter.

6.2 Iterasi dan Metode Perbaikan Model

Setelah fine-tuning awal, iterasi mungkin diperlukan untuk mengoptimalkan kinerja model. Berikut adalah beberapa strategi iterasi:

  • Tambah Data: Jika model tampil buruk pada jenis input tertentu, coba tambahkan lebih banyak contoh dari input tersebut.

  • Refleksi pada Kualitas Data: Periksa apakah data pelatihan mengandung informasi yang salah atau ambigu. Masalah kualitas ini dapat menyebabkan kinerja model yang buruk.

  • Keseimbangan Data: Pastikan data pelatihan memiliki keragaman dan keseimbangan dalam kategori dan gaya.

  • Penyesuaian Hyperparameter: Seperti yang telah disebutkan sebelumnya, menyesuaikan jumlah epoch, laju pembelajaran, dan ukuran batch dapat berdampak signifikan pada kinerja model.

Melalui metode ini, Anda dapat secara bertahap mengoptimalkan model fine-tuning Anda untuk mencapai kinerja terbaik.

7. Evaluasi dan Penggunaan Model Fine-tuning

7.1 Evaluasi Model Fine-tuning

Setelah selesai melakukan fine-tuning pada model, mengevaluasi kinerja model fine-tuning sangat penting. Berikut adalah beberapa metode evaluasi standar:

  1. Bandingkan Sampel: Gunakan sampel uji yang disiapkan untuk secara terpisah memanggil model dasar dan model fine-tuning, kemudian bandingkan hasil output untuk menilai efektivitas model fine-tuning.

  2. Metrik Statistik: Lacak metrik seperti kerugian dan akurasi selama proses fine-tuning. Kerugian seharusnya menurun selama pelatihan, sementara akurasi seharusnya meningkat.

  3. Pengujian A/B: Desain eksperimen, bagi lalu lintas, dan jalankan baik model dasar maupun model fine-tuning secara bersamaan untuk mengamati perbedaan kinerja dalam lingkungan nyata.

  4. Umpan Balik Pengguna: Kumpulkan umpan balik pengguna tentang penggunaan model, terutama untuk tugas pemrosesan bahasa alami, di mana kepuasan pengguna adalah ukuran kinerja model yang kritis.

7.2 Cara Menggunakan Model Fine-tuning

Menggunakan model fine-tuning sangat mudah. Anda hanya perlu menyebutkan nama model fine-tuning Anda sebagai parameter dalam panggilan API. Berikut adalah contoh kode untuk menggunakan model fine-tuning:

Contoh Python

from openai import OpenAI

client = OpenAI(api_key='Your API Key')

response = client.chat.completions.create(
  model="Nama Model",
  messages=[
    {"role": "system", "content": "Anda adalah asisten yang membantu."},
    {"role": "user", "content": "Hello!"}
  ]
)
print(response.choices[0].message)

Di sini, gantilah "Nama Model" dengan nama spesifik dari model fine-tuning Anda, misalnya, "ft:nama model:organisasi Anda:nama fine-tuning:ID".

Bab 7: Praktik Terbaik untuk Menyempurnakan

Selama proses penyempurnaan, kita dapat mengikuti beberapa praktik terbaik untuk meningkatkan kinerja model lebih lanjut:

  1. Kualitas Data: Pastikan data latihan yang berkualitas tinggi dan beragam untuk menghindari kinerja model yang buruk akibat data yang tidak akurat atau tunggal.

  2. Distribusi Data: Data latihan harus mencakup semua skenario input yang mungkin untuk memastikan kinerja model dalam situasi dunia nyata.

  3. Iterasi Bertahap: Secara bertahap tambahkan data latihan dan amati perubahan kinerja model, daripada menambahkan sejumlah besar data sekaligus.

  4. Penyetelan Hyperparameter: Sesuaikan hyperparameter seperti tingkat pembelajaran, ukuran batch, dan jumlah iterasi berdasarkan kinerja model.

  5. Peningkatan Terus-Menerus: Menyempurnakan model bukanlah proses sekali jalan. Iterasi reguler untuk memperbarui dataset dan model dapat terus meningkatkan efektivitas model.

Isu Umum dan Solusinya:

  • T: Apa yang harus dilakukan jika model yang telah disempurnakan tidak mencapai hasil yang diharapkan?

    • J: Teliti dan tingkatkan kualitas serta keragaman data latihan, dan sesuaikan strategi pelatihan berdasarkan hasil evaluasi.
  • T: Bagaimana mengatasi kinerja model yang buruk dalam skenario tertentu?

    • J: Tambahkan sampel latihan untuk skenario tersebut untuk meningkatkan kemampuan pemrosesan model dalam situasi tertentu tersebut.
  • T: Bagaimana mengontrol biaya selama proses penyempurnaan?

    • J: Estimasi jumlah token terlebih dahulu dan nilai biaya dari berbagai model.

Dengan menggabungkan saran dan alat-alat ini, Anda akan dapat memaksimalkan efektivitas penyempurnaan model Anda dan memastikan bahwa proses penyempurnaan sesuai dengan harapan dan kebutuhan Anda.