Cara Membuat Data untuk Fine-Tuning LLM


Penalaan halus model bahasa besar (LLM) hanya sebaik data yang digunakan untuk melatihnya. Set data yang berkualiti tinggi dan tersusun dengan baik secara langsung menentukan sejauh mana model mengikuti arahan, menjawab soalan, dan berkelakuan dalam produksi.

Panduan ini menerangkan persediaan data dari awal hingga akhir untuk penalaan LLM, daripada teks mentah kepada set data yang sedia untuk produksi.

Perkara Penting

  • Data berkualiti tinggi lebih penting daripada kuantiti yang besar ketika menyelaras LLM. Set data yang bersih, tersusun dengan baik, dan selari dengan tugasan sentiasa lebih baik daripada yang bising dan terlalu besar.
  • Mulakan dengan objektif yang jelas sebelum mengumpul data. Mengetahui sama ada anda sedang menyesuaikan untuk mengikuti arahan, kepakaran domain, atau tingkah laku perbualan akan membimbing setiap keputusan data.
  • Pasangan arahan–tindak balas adalah asas penyelarasan halus yang berkesan. Arahan yang ditulis dengan baik beserta tindak balas yang tepat dan ringkas membantu model mempelajari tingkah laku yang diingini dengan lebih cepat.
  • Pemformatan data yang betul adalah penting. Menyelaraskan set data anda dengan rangka kerja sasaran (JSON, JSONL, atau format chat) dapat mencegah kegagalan latihan dan meningkatkan kecekapan pembelajaran.
  • Penilaian dan pengulangan berterusan adalah perlu. Penalaan halus adalah proses berulang: pantau hasil, perbaiki data, dan latih semula untuk mencapai prestasi yang optimum.

Memahami Keperluan Data Penalaan Halus LLM

Data penalaan halus bukanlah teks mentah yang diambil daripada internet. Berbeza dengan latihan awal, di mana model mempelajari corak bahasa daripada korpus yang besar, penalaan halus mengajar model bagaimana ia harus bertindak. Tujuannya adalah untuk membentuk respons supaya model mengikuti arahan, menjawab soalan dengan tepat, dan mengamalkan personaliti yang konsisten.

Dalam amalan, ini bermakna menukar pengetahuan kepada contoh berstruktur yang memadankan niat pengguna dengan jawapan yang ideal. Setiap titik data secara jelas menunjukkan kepada model bagaimana rupa jawapan yang baik bagi sesuatu arahan. Lama-kelamaan, model akan mempelajari corak ini dan mula menggunakannya untuk input yang belum pernah dilihat.

Kebanyakan rangkaian penalaan halus moden bergantung sama ada kepada data gaya arahan atau data gaya sembang. Set data gaya arahan terdiri daripada arahan, input pilihan, dan output. Set data gaya sembang menggunakan mesej berasaskan peranan seperti sistem, pengguna, dan pembantu. Kedua-dua pendekatan berfungsi untuk tujuan yang sama; pilihan biasanya bergantung kepada model sasaran dan rangka kerja latihan.

Format Data untuk Penalaan Halus LLM

Sebelum mencipta atau mengeksport set data, adalah penting untuk memahami pelbagai format data yang digunakan untuk penalaan halus LLM. Format yang kita pilih secara langsung mempengaruhi bagaimana model menafsirkan arahan, mempelajari aliran perbualan, dan mengaplikasikannya kepada penggunaan dunia sebenar. Walaupun kebanyakan rangka kerja latihan moden menyokong pelbagai format, setiap format mempunyai tujuan yang sedikit berbeza dan sesuai untuk matlamat penalaan halus yang berbeza.

Berikut adalah beberapa format data yang paling banyak digunakan untuk penalaan model.

Format Gaya Penyempurnaan

Set data gaya penyempurnaan adalah bentuk data penyelarasan yang paling mudah dan tradisional. Dalam format ini, model diberikan arahan dan dilatih untuk meramalkan sambungannya. Format ini biasa digunakan dalam penyelarasan awal gaya GPT dan masih disokong oleh banyak API.

Contoh gaya penyelesaian biasanya kelihatan seperti ini:

{
"prompt": "What is a Linux-Console.net GPU Droplet?
Answer:",
"completion": " A GPU Droplet is a virtual machine on Linux-Console.net that includes NVIDIA GPUs for AI, machine learning, and high-performance computing workloads."
}

Dalam susunan ini, model belajar untuk terus menjana teks selepas arahan diberikan. Walaupun pendekatan ini mudah, ia mempunyai batasan. Oleh kerana strukturnya tersirat, model mungkin menghadapi kesukaran dengan arahan yang kompleks atau perbualan berbilang pusingan. Penalaan halus gaya penyempurnaan paling sesuai untuk tugas terhad seperti jawapan pendek, pengelasan, atau penjanaan teks terkawal.

Format Gaya Arahan

Pelarasan halus bergaya arahan menjadikan objektif pembelajaran jelas dengan memisahkan arahan daripada hasil yang dijangka. Format ini telah menjadi standard de facto untuk menyesuaikan LLM sumber terbuka kerana ia meningkatkan tingkah laku mengikut arahan dan mengurangkan kekaburan.

Satu contoh gaya arahan biasanya mengandungi tiga medan: arahan, input pilihan, dan output. Arahan menerangkan tugasan, input memberikan konteks tambahan jika diperlukan, dan output mewakili respons yang ideal.

{
"instruction": "Explain what a GPU Droplet is in Linux-Console.net",
"input": "",
"output": "A GPU Droplet is a virtual machine provided by Linux-Console.net that comes with NVIDIA GPUs and is designed for AI, machine learning, deep learning, and high-performance computing workloads."
}

Format ini sangat mudah dibaca dan mudah untuk dibaiki ralat. Ini membolehkan penggabungan pelbagai jenis tugasan, seperti penjelasan, ringkasan, dan penyelesaian masalah, dalam set data yang sama. Data gaya arahan adalah ideal apabila matlamatnya adalah untuk mengajar model bagaimana mengikuti arahan dengan tepat dan menghasilkan respons yang konsisten serta khusus bidang.

Format Gaya Sembang

Set data gaya sembang direka untuk meniru interaksi perbualan sebenar. Setiap contoh latihan terdiri daripada satu siri mesej, di mana setiap mesej dikaitkan dengan peranan seperti sistem, pengguna, atau pembantu. Format ini sangat selaras dengan cara LLM berasaskan sembang digunakan dalam pengeluaran.

Contoh gaya perbualan biasanya kelihatan seperti ini:

{
"messages": [
{"role": "system", "content": "You are a helpful Linux-Console.net support assistant."},
{"role": "user", "content": "What is a GPU Droplet?"},
{"role": "assistant", "content": "A GPU Droplet is a virtual machine on Linux-Console.net equipped with NVIDIA GPUs, designed for AI, machine learning, and high-performance computing workloads."}
]
}

Mesej sistem menentukan tingkah laku dan nada model, manakala mesej pengguna dan pembantu mengajar aliran perbualan. Format ini amat berkesan untuk chatbot, ejen khidmat pelanggan, dan pembantu multi-segi.

Walau bagaimanapun, set data gaya perbualan lebih panjang lebar dan sedikit lebih kompleks untuk disusun. Ia paling sesuai digunakan apabila aplikasi akhir bersifat perbualan dan bergantung pada konteks.

Sebelum memutuskan format yang sesuai untuk latihan model, kita mesti terlebih dahulu menjelaskan tugas khusus yang kita ingin capai.

Jika kita menyesuaikan model untuk tugas mudah prompt–respons, data gaya penyempurnaan mungkin sudah mencukupi. Bagi kebanyakan kes penggunaan penyesuaian domain dan mengikuti arahan, set data gaya arahan menawarkan keseimbangan terbaik antara kejelasan dan fleksibiliti. Apabila membina ejen perbualan atau pembantu yang mesti mengekalkan konteks dan persona, set data gaya sembang adalah pilihan yang paling semula jadi. Apa yang paling penting ialah konsistensi. Set data yang berstruktur baik dan bersih dalam mana-mana format ini akan berprestasi lebih baik daripada set data yang lebih besar tetapi direka dengan kurang sempurna.

Daripada Mana Data Penalaan Halus Datang

Set data penalaan halus berkualiti tinggi hampir selalu diperoleh daripada sumber yang berwibawa. Ini termasuk dokumentasi produk, rujukan API, tiket sokongan dalaman, artikel pusat bantuan, dan penjelasan pakar yang dipilih dengan teliti. Dalam banyak sistem dunia sebenar, pasukan juga mencipta contoh sintetik untuk merangkumi kes tepi atau pertanyaan yang kurang diwakili.

Sentiasa ada keperluan untuk mengenal pasti sumber yang dipercayai yang mencerminkan pengetahuan dan tingkah laku yang kita ingin model pelajari. Untuk penalaan khusus domain, ini sering merangkumi dokumentasi rasmi, pangkalan pengetahuan dalaman, tiket sokongan, FAQ, dan panduan yang ditulis oleh pakar. Semakin dekat data dengan soalan pengguna sebenar dan jawapan berwibawa, semakin berkesan model yang ditala dengan baik. Kadang-kadang, mungkin juga terdapat keperluan untuk melakukan pengikisan web secara etika bagi menghasilkan data yang dipercayai untuk chatbot tertentu khusus domain.

Dalam amalan, banyak pasukan bergantung kepada gabungan data proprietari dan set data terbuka. Platform seperti Hugging Face memainkan peranan utama dalam proses ini. Hugging Face menempatkan ribuan set data yang tersedia untuk umum yang merangkumi penyelarasan arahan, menjawab soalan, meringkaskan, dan tugas perbualan. Set data ini boleh digunakan secara langsung, diubah suai untuk domain baru, atau dijadikan templat untuk mencipta data tersuai. Hugging Face Datasets juga menyediakan utiliti standard untuk pemuatan, versi, dan penstriman, yang memudahkan pemerolehan dan pra-pemprosesan data berskala besar dengan ketara.

Data Dijana LLM dan Penciptaan Set Data Sintetik

Salah satu amalan moden dalam penyelarasan LLM adalah menjana data latihan menggunakan model bahasa besar sedia ada. Pendekatan ini, yang sering dirujuk sebagai penjanaan data sintetik atau data yang dijana oleh LLM, semakin popular kerana ia dapat mengurangkan masa dan kos yang diperlukan untuk membina set data berkualiti tinggi dengan ketara.

Dalam aliran kerja ini, model asas yang kukuh digerakkan untuk menghasilkan pasangan arahan–tindak balas, contoh soalan–jawapan, atau perbualan berbilang pusingan berdasarkan skema yang telah ditetapkan. Hasil yang dijana kemudian disemak, ditapis, dan diperhalusi sebelum ditambahkan ke dalam set data penyelarasan halus. Apabila dilakukan dengan teliti, teknik ini boleh menghasilkan data yang hampir meniru interaksi pengguna sebenar.

Data yang dijana oleh LLM amat berguna apabila contoh yang ditulis oleh manusia adalah terhad, ketika merangkumi kes-kes tepi, atau apabila mengembangkan set data sedia ada untuk meningkatkan liputan dan kepelbagaian. Sebagai contoh, setelah kita menetapkan satu set kecil fakta Linux-Console.net yang dipercayai, LLM boleh menjana berpuluh-puluh soalan dengan variasi semantik dan jawapan berkualiti tinggi sambil mengekalkan konsistensi dengan pengetahuan asal.

Walau bagaimanapun, data sintetik mesti digunakan dengan berhati-hati. Model cenderung menguatkan bias dan corak ungkapan mereka sendiri, yang boleh menyebabkan overfitting atau pengurangan kepelbagaian linguistik jika set data sepenuhnya sintetik. Atas sebab ini, data yang dijana oleh LLM berfungsi dengan baik apabila digabungkan dengan data sumber yang disusun oleh manusia atau berwibawa. Semakan manusia, pemeriksaan pengesahan automatik, dan penghapusan data berganda adalah langkah penting dalam proses ini.

Dalam rangkaian pengeluaran, pasukan kerap mengikuti pendekatan hibrid. Data yang ditulis oleh manusia menetapkan ketepatan dan nada, manakala data yang dijana oleh LLM meningkatkan saiz set data dan mengisi kekosongan. Keseimbangan ini membolehkan pasukan mencapai keputusan penalaan halus yang kukuh tanpa mengorbankan ketepatan atau kebolehpercayaan.

Menyediakan Dataset Hugging Face untuk Penalaan Halus LLM

Sekarang Hugging Face mempunyai sejumlah besar set data sumber terbuka yang boleh digunakan untuk menghasilkan data penalaan halus yang berkualiti tinggi. Banyak daripada set data ini sudah mengandungi pasangan arahan–tindak balas tetapi masih perlu diformatkan ke dalam struktur arahan yang konsisten sebelum latihan.

Contoh_1:

from datasets import load_dataset
from itertools import islice

# Load Dolly dataset (non-streaming; small enough)
dataset = load_dataset("databricks/databricks-dolly-15k", split="train")

# Take first 1000 samples
samples = list(islice(dataset, 1000))

print("Dolly sample structure:")
print(samples[0])

# Format for instruction fine-tuning
def format_dolly(example):
   instruction = example["instruction"]
   context = example.get("context", "")
   response = example["response"]

   prompt_parts = [
       f"### Instruction:\n{instruction}"
   ]

   if context.strip():
       prompt_parts.append(f"### Input:\n{context}")

   prompt_parts.append(f"### Response:\n{response}")

   return {"text": "\n".join(prompt_parts)}

# Apply formatting
formatted_samples = [format_dolly(sample) for sample in samples]
Dolly sample structure:
{'instruction': 'When did Virgin Australia start operating?', 'context': "Virgin Australia, the trading name of Virgin Australia Airlines Pty Ltd, is an Australian-based airline. It is the largest airline by fleet size to use the Virgin brand. It commenced services on 31 August 2000 as Virgin Blue, with two aircraft on a single route. It suddenly found itself as a major airline in Australia's domestic market after the collapse of Ansett Australia in September 2001. The airline has since grown to directly serve 32 cities in Australia, from hubs in Brisbane, Melbourne and Sydney.", 'response': 'Virgin Australia commenced services on 31 August 2000 as Virgin Blue, with two aircraft on a single route.', 'category': 'closed_qa'}

Contoh_2:

from datasets import load_dataset
from itertools import islice

dataset = load_dataset(
   "Open-Orca/OpenOrca",
   split="train",
   streaming=True
)

samples = list(islice(dataset, 1000))

def format_openorca(example):
   system = example.get("system_prompt", "You are a helpful assistant.")
   question = example["question"]
   answer = example["response"]

   text = (
       f"### System:\n{system}\n"
       f"### Instruction:\n{question}\n"
       f"### Response:\n{answer}"
   )

   return {"text": text}

formatted_samples = [format_openorca(s) for s in samples]
{   'text': '### System:\n'
            '\n'
            '### Instruction:\n'
            'You will be given a definition of a task first, then some input '
            'of the task.\n'
            'This task is about using the specified sentence and converting '
            'the sentence to Resource Description Framework (RDF) triplets of '
            'the form (subject, predicate object). The RDF triplets generated '
            'must be such that the triplets accurately capture the structure '
            'and semantics of the input sentence. The input is a sentence and '
            'the output is a list of triplets of the form [subject, predicate, '
            'object] that capture the relationships present in the sentence. '
            'When a sentence has more than 1 RDF triplet possible, the output '
            'must contain all of them.\n'
            '\n'
            "AFC Ajax (amateurs)'s ground is Sportpark De Toekomst where Ajax "
            'Youth Academy also play.\n'
            'Output:\n'
            '### Response:\n'
            '[\n'
            '  ["AFC Ajax (amateurs)", "has ground", "Sportpark De '
            'Toekomst"],\n'
            '  ["Ajax Youth Academy", "plays at", "Sportpark De Toekomst"]\n'
            ']'}
  • Memastikan struktur arahan yang konsisten di semua sampel,
  • Mengendalikan input pilihan dengan bersih,
  • Menghasilkan satu medan "text" yang berfungsi dengan lancar dengan penukar token,
  • Serasi dengan LoRA, QLoRA, dan saluran penalaan penuh.

Setelah diformat, set data ini boleh terus ditokenkan dan dihantar ke gelung latihan menggunakan Hugging Face Trainer, SFTTrainer, atau kod PyTorch tersuai. Petua:
Sebagai amalan, sentiasa periksa beberapa sampel yang telah diformat sebelum latihan. Ketidakkonsistenan format yang kecil boleh menjejaskan tingkah laku model dengan ketara semasa penyetelan halus.

Mencipta Data untuk Penalaan Halus LLM Khusus Domain

Untuk menala halus model bahasa besar bagi domain tertentu, seperti penjagaan kesihatan, undang-undang, kewangan, atau pendidikan, memerlukan pengumpulan data mentah.

Bahagian ini menerangkan pendekatan berstruktur untuk menghasilkan data penalaan halus berkualiti tinggi yang khusus untuk domain tertentu. Tetapkan Skop Domain dan Tugas Sasaran: Mulakan dengan jelas menentukan apa yang model perlu pelajari dan bagaimana ia akan digunakan. Penalaan halus khusus domain adalah paling berkesan apabila skopnya sempit dan berasaskan tugas.

Soalan utama untuk dijawab:

  • Pengetahuan bidang apa yang perlu dimiliki oleh model itu?
  • Apakah tugasan yang akan dilakukan oleh pengguna menggunakan model ini?
  • Tahap kepakaran apa yang sepatutnya ditunjukkan oleh jawapan?

Contoh:

  • Penjagaan Kesihatan: ringkasan nota klinikal, penerangan konsep perubatan
  • Kewangan: tafsiran metrik kewangan, analisis pendapatan
  • DevOps: analisis log, penyelesaian masalah insiden

Skop yang jelas dapat mengelakkan data yang bising atau tidak relevan daripada menurunkan prestasi model. Kumpul Data Domain Berkualiti Tinggi: Set data khusus domain harus diperoleh daripada bahan yang boleh dipercayai dan berautoriti.

Sumber data yang biasa termasuk:

  • Dokumentasi dalaman dan pangkalan pengetahuan
  • Kertas putih industri dan penerbitan penyelidikan
  • Manual teknikal dan dokumentasi produk
  • Tiket sokongan, Soalan Lazim (FAQ), dan interaksi pelanggan
  • Transkrip atau nota daripada pakar bidang

Pastikan semua pengumpulan data mematuhi keperluan privasi, keselamatan, dan perlesenan.

Ubah Kandungan Mentah menjadi Pasangan Arahan–Respon: Teks domain mentah mesti ditukar menjadi contoh pembelajaran terselia yang mengajar model bagaimana bertindak balas terhadap pertanyaan khusus domain.

Setiap sampel harus mewakili tugas yang realistik yang dijangka dilakukan oleh model itu.

Contoh (Kewangan):

  • Arahan: Terangkan EBITDA dan peranannya dalam penilaian syarikat.
  • Respons: EBITDA mewakili pendapatan sebelum faedah, cukai, susut nilai, dan pelunasan, dan biasanya digunakan untuk menilai prestasi operasi sesebuah syarikat.

Transformasi ini boleh dilakukan secara manual, separa automatik dengan bantuan LLM, atau sepenuhnya secara berprogram dengan pengesahan. Gunakan Struktur Prompt yang Konsisten: Konsistensi dalam format adalah penting untuk penalaan halus yang stabil. Template prompt yang standard membantu model mempelajari sempadan tugas dan jangkaan jawapan.

Format penyelarasan arahan yang disyorkan:

### Instruction:
<Task description>

### Input:
<Optional domain context>

### Response:
<Expected output>

Struktur ini amat serasi dengan rangka kerja penalaan halus gaya Alpaca, gaya Dolly, dan berasaskan LLaMA.

Format Data Domain Secara Programatik: Setelah pasangan arahan–respon ditetapkan, ia boleh ditukar menjadi contoh teks yang sedia untuk latihan.

def format_domain_example(example):
    instruction = example["instruction"]
    context = example.get("context", "")
    response = example["response"]

    sections = [f"### Instruction:\n{instruction}"]

    if context.strip():
        sections.append(f"### Input:\n{context}")

    sections.append(f"### Response:\n{response}")

    return {"text": "\n".join(sections)}

Medan “teks” yang terhasil boleh terus ditokenkan dan dihantar ke aliran kerja penyempurnaan terbimbing. Sahkan Kualiti Data Sebelum Penyempurnaan: Sebelum latihan bermula, semak secara manual sebahagian sampel untuk memastikan data adalah betul dari segi fakta, arahan adalah tepat dan jelas, serta respons yang diberikan adalah berkualiti.

Data berkualiti rendah, walaupun dalam kuantiti yang kecil, boleh memberi kesan yang ketara terhadap bagaimana sesebuah model berfungsi selepas penyetelan halus. Untuk maklumat lanjut mengenai topik ini, jangan ragu untuk melihat blog terperinci tentang Perosakan LLM.

Pilih Strategi Penalaan yang Sesuai: Untuk kebanyakan kes penggunaan khusus domain:

  • LoRA/QLoRA menawarkan penyesuaian yang pantas dan menjimatkan kos
  • Penyetelan sepenuhnya memberikan prestasi maksimum dengan kos yang lebih tinggi

Kebanyakan pasukan mencapai keputusan yang baik menggunakan pemurnian terlatih berasaskan LoRA dengan data yang disusun dengan baik. Kami telahpun membuat tutorial langkah demi langkah yang menunjukkan cara menggunakan LoRA untuk pemurnian model menggunakan set data tersuai. Sila rujuk bahagian sumber untuk maklumat lanjut.

Pengikisan web adalah cara praktikal untuk mengumpul kandungan khusus domain daripada dokumentasi awam, blog, atau pangkalan pengetahuan. Setelah dikikis, teks mentah ini boleh diubah menjadi pasangan arahan–tindak balas untuk penalaan halus secara terkawal.

Amaran: Sentiasa pastikan laman web membenarkan pengikisan dan dilakukan secara etika.

Langkah 1: Pasang Pustaka Yang Diperlukan

Gunakan pip untuk memasang perpustakaan yang diperlukan.

pip install requests beautifulsoup4

Langkah 2: Mengikis Kandungan Menggunakan Beautiful Soup

Dalam contoh ini, kami mengikis tajuk dan perenggan daripada halaman dokumentasi teknikal.

import requests
from bs4 import BeautifulSoup

def scrape_page(url):
    response = requests.get(url, timeout=10)
    response.raise_for_status()

    soup = BeautifulSoup(response.text, "html.parser")

    title = soup.find("h1")
    paragraphs = soup.find_all("p")

    content = {
        "title": title.get_text(strip=True) if title else "",
        "paragraphs": [
            p.get_text(strip=True)
            for p in paragraphs
            if len(p.get_text(strip=True)) > 100
        ]
    }

    return content

Langkah 3: Menukar Kandungan Yang Disaring Menjadi Pasangan Arahan–Tindak Balas

Selepas mengikis, kami menukar teks mentah itu menjadi sampel latihan yang sesuai untuk penalaan arahan.

def create_instruction_data(scraped_content):
    instruction = (
        f"Explain the following topic in a clear and concise manner: "
        f"{scraped_content['title']}"
    )

    response = " ".join(scraped_content["paragraphs"])

    return {
        "instruction": instruction,
        "response": response
    }

Langkah 4: Format Data untuk Penalaan Halus LLM

Akhirnya, formatkan pasangan arahan–tindak balas ke dalam satu medan arahan sahaja.

def format_for_finetuning(example):
    text = (
        f"### Instruction:\n{example['instruction']}\n\n"
        f"### Response:\n{example['response']}"
    )
    return {"text": text}

Langkah 5: Contoh Lengkap

url = "https://linux-console.net/community/tutorials/deploy-coreflux-mqtt-mongodb
"
scraped = scrape_page(url)

instruction_data = create_instruction_data(scraped)
formatted_sample = format_for_finetuning(instruction_data)

print(formatted_sample["text"][:500])
### Instruction:
Explain the following topic in a clear and concise manner: Deploy Coreflux MQTT Broker with MongoDB on Linux-Console.net

### Response:
MQTT brokersare essential for modernIoTinfrastructure andautomationsystems, where the need for a centralized, unified, and fast data hub is the key part for system interoperability and data exchange.Corefluxis a powerful,low codeMQTT broker that expands the traditional MQTT broker to a system that provides advanced features forreal-time dataprocessin

Menjana Data Sintetik Menggunakan LLM (Tanpa API Berbayar)

Mengumpul dan menanda data khusus domain secara manual sering kali mahal dan memakan masa. Alternatif yang praktikal adalah penjanaan data sintetik menggunakan LLM, di mana LLM digunakan untuk mencipta pasangan arahan–tindak balas yang realistik dalam skala besar. Selalunya kita boleh menggunakan kekunci API GROQ atau mana-mana perkhidmatan berbayar lain untuk menggunakan LLM bagi menjana data sintetik, tetapi dalam saluran data ini, kami akan menunjukkan cara menjana data sokongan pelanggan sintetik menggunakan LLM percuma yang dijalankan secara tempatan dari Hugging Face, tanpa memerlukan kekunci API atau perkhidmatan berbayar.

Contoh: Penjana Data Sokongan Pelanggan Sintetik

Contoh berikut menggunakan perpustakaan transformers Hugging Face dengan model sumber terbuka yang ringan (flan-t5-base) untuk menghasilkan pasangan arahan–respons bagi senario sokongan pelanggan.

Pasang Kebergantungan

pip install transformers torch

Kod Python: Menjana Data Sintetik Menggunakan LLM Tempatan

import random
import json
from transformers import pipeline

class FreeSyntheticDataGenerator:
    def __init__(self):
        # Instruction-tuned model
        self.generator = pipeline(
            "text2text-generation",
            model="google/flan-t5-base"
        )

        self.templates = {
            "order_inquiry": [
                "Where is my order #{order_id}?",
                "Can you track order #{order_id}?",
                "What is the status of order #{order_id}?"
            ],
            "return_request": [
                "I want to return my {product}",
                "How do I get a refund for {product}?"
            ],
            "technical_support": [
                "My {device} is not turning on.",
                "I am facing error code {error_code} on {software}"
            ]
        }

        self.variables = {
            "order_id": ["12345", "67890", "ABC999"],
            "product": ["laptop", "phone", "headphones"],
            "device": ["laptop", "router", "tablet"],
            "software": ["Windows", "Android", "website"],
            "error_code": ["404", "E-001"]
        }

    def generate_examples(self, category, count=5):
        dataset = []

        for _ in range(count):
            instruction = random.choice(self.templates[category])

            for var, values in self.variables.items():
                instruction = instruction.replace(
                    f"{{{var}}}", random.choice(values)
                )

            prompt = f"""
You are a professional customer support agent.
Respond clearly and concisely.
Customer query: {instruction}
"""

            response = self.generator(
                prompt,
                max_length=150,
                do_sample=False
            )[0]["generated_text"]

            dataset.append({
                "instruction": instruction,
                "output": response.strip(),
                "category": category
            })

        return dataset


if __name__ == "__main__":
    generator = FreeSyntheticDataGenerator()
    samples = generator.generate_examples("order_inquiry", 3)
    print(json.dumps(samples, indent=2))

Format Output untuk Penalaan Halus

Setiap contoh yang dijana mengikuti format penyelarasan arahan, menjadikannya sesuai untuk penalaan halus terarah (SFT):

[
  {
    "instruction": "What is the status of order #12345?",
    "output": "Order #12345 has been placed.",
    "category": "order_inquiry"
  },
  {
    "instruction": "What is the status of order #12345?",
    "output": "Your order is currently being processed and is expected to be delivered within the estimated delivery timeline.",
    "category": "order_inquiry"
  },
  {
    "instruction": "Where is my order #12345?",
    "output": "Where is your order #12345?",
    "category": "order_inquiry"
  }
]

Sila bebas untuk meneroka pilihan percuma yang lain juga; bagaimanapun, jika anda menggunakan pilihan API berbayar, anda boleh menggunakannya untuk penjanaan data sintetik berkualiti (dan lain-lain). Berikut adalah beberapa contoh:

PenyediaModel UtamaTerbaik UntukCatatan
OpenAIGPT-4.1, GPT-4.1-Nano, GPT-4.5Teks berkualiti tinggi, mengikut arahan, kod, pelbagai pusinganDigunakan secara meluas; ekosistem yang kukuh
GroqLLaMA 3 (8B/16B)Inferens lebih pantas; lapisan kos tetapGabungan kelajuan dan ketepatan yang sangat baik
AntropikClaude 3 (contohnya, Claude 3 Opus)Respons bersahabat dan selamatSesuai untuk pembantu sembang
CoherePerintah RPenjanaan dipertingkatkan pengambilanBaik untuk aliran kerja RAG
Google Vertex AIModel GeminiSokongan multimodalBerintegrasi dengan aliran kerja GCP

Walau bagaimanapun, API berbayar kadangkala lebih baik untuk penjanaan data sintetik kerana ia menggunakan model besar yang dilatih mengikut arahan khusus yang direka untuk mengikut arahan dengan tepat dan menghasilkan respons yang tersusun serta berkualiti tinggi.

Berbeza dengan model percuma atau asas, API berbayar memahami niat, arahan peranan, dan keperluan pemformatan, yang menghasilkan output yang koheren, relevan, dan konsisten merentasi ribuan sampel. Ini secara signifikan mengurangkan halusinasi, pengulangan, dan teks yang tidak berkaitan, bermakna data yang dihasilkan memerlukan pembersihan manual yang jauh lebih sedikit sebelum ia boleh digunakan untuk penalaan halus.

Selain itu, API berbayar menguruskan kebolehskalaan, kebolehpercayaan, dan prestasi secara automatik, membolehkan pasukan menjana jumlah data sintetik yang besar dengan cepat dan menjadikannya pilihan yang lebih cekap dan mudah untuk set data tahap pengeluaran.

Mengapa Kualiti Data Lebih Penting Daripada Jumlah Data

Salah satu kesilapan paling biasa dalam penalaan halus ialah mengutamakan saiz set data berbanding kualiti set data. Jumlah besar contoh yang bising, berulang, atau samar-samar boleh menjejaskan prestasi model secara aktif. Sebaliknya, set data yang lebih kecil dengan arahan yang jelas dan jawapan yang tepat sering memberikan hasil yang jauh lebih baik.

Data penalaan halus berkualiti tinggi mempunyai beberapa ciri penentu. Setiap contoh memfokuskan kepada satu niat sahaja, jawapannya lengkap tetapi ringkas, nada suara konsisten di seluruh set data, dan tiada percanggahan atau fakta yang direka. Contoh yang sama atau hampir sama harus dielakkan kecuali pengulangan adalah sengaja untuk penguatan.

Sebagai peraturan umum, ribuan contoh yang dikurasi dengan teliti biasanya sudah mencukupi untuk penyesuaian domain dan pembentukan tingkah laku. Kita hanya memerlukan puluhan ribu contoh apabila kita ingin mengejar pengkhususan mendalam atau merangkumi pelbagai jenis tugas yang sangat luas.

Soalan Lazim

Berapa banyak data yang diperlukan untuk melatih semula LLM?

Jumlah data yang diperlukan bergantung pada kaedah penalaan halus dan tugas yang dijalankan. Untuk kaedah penalaan halus yang cekap dari segi parameter seperti LoRA atau QLoRA, keputusan berkualiti tinggi sering boleh dicapai dengan hanya 500 hingga 5,000 pasangan arahan–tindak balas. Penalaan penuh model biasanya memerlukan set data yang jauh lebih besar, sering puluhan atau ratusan ribu contoh. Dalam kebanyakan kes, kualiti dan kaitan data lebih penting daripada jumlah semata-mata.

bolehkah saya melatih lembaga bahasa besar (LLM) menggunakan hanya data sintetik?

Ya, LLM boleh disesuaikan menggunakan hanya data sintetik, terutamanya untuk tugas yang jelas seperti sokongan pelanggan, ringkasan, atau soal jawab khusus domain. Data sintetik berfungsi dengan baik apabila ia dijana menggunakan model yang disesuaikan dengan arahan dan disahkan melalui pemeriksaan automatik serta semakan manusia. Banyak sistem pengeluaran menggunakan campuran data sintetik dan sebenar, tetapi data sintetik berkualiti tinggi sahaja masih boleh memberikan prestasi yang kukuh.

Apakah format data terbaik untuk penalaan halus LLM?

Format yang paling kerap digunakan dan disyorkan ialah JSONL (JSON Lines), di mana setiap baris mewakili satu contoh latihan. Untuk penyelarasan arahan, ini biasanya termasuk medan seperti instruction dan output. JSONL disokong secara meluas oleh Hugging Face, PEFT (LoRA/QLoRA), dan kebanyakan aliran kerja penalaan semula, menjadikannya mudah untuk aliran dan skala semasa latihan.

Berapa lama penyediaan data mengambil masa?

Masa penyediaan data berbeza bergantung pada saiz dan kerumitan set data. Untuk set data kecil hingga sederhana (1,000–5,000 sampel), penyediaan boleh mengambil masa beberapa jam hingga beberapa hari, termasuk pembersihan dan pengesahan. Set data yang lebih besar atau khusus domain mungkin memerlukan beberapa hari atau minggu, terutamanya jika pengesahan manusia terlibat. Automasi sebahagian daripada aliran kerja boleh mengurangkan masa ini dengan ketara.

Berapa kerap data penalaan halus perlu dikemas kini?

Data penyetelan semula harus dikemas kini setiap kali domain, tingkah laku pengguna, atau keperluan berubah. Bagi produk yang berkembang pesat atau sistem sokongan pelanggan, kemas kini setiap beberapa minggu atau bulan adalah perkara biasa. Kemas kini secara berkala membantu model kekal tepat, mengurangkan peralihan, dan menyesuaikan diri dengan istilah baru, polisi, atau jangkaan pengguna.

Kesimpulan

Menyediakan data berkualiti tinggi adalah langkah utama untuk penalaan halus LLM yang berjaya. Walaupun pemilihan model dan teknik latihan sering mendapat perhatian paling banyak, kualiti, struktur, dan kesesuaian data adalah faktor yang akhirnya menentukan sejauh mana model yang ditala halus berprestasi dengan baik. Rangkaian data yang direka dengan baik merangkumi pemerolehan, pembersihan, pengesahan, pemeriksaan bias, dan semakan manusia memastikan model mempelajari kelakuan yang betul dan menghasilkan output yang boleh dipercayai serta selaras.

Seperti yang ditunjukkan dalam artikel ini, penyediaan data tidak semestinya bergantung sepenuhnya pada set data yang mahal atau sukar diperoleh. Data sintetik yang dijana menggunakan LLM yang disesuaikan dengan arahan, apabila digabungkan dengan kawalan kualiti yang tepat, boleh menjadi penyelesaian yang berkesan dan boleh diskalakan untuk banyak kes penggunaan penalaan halus. Dengan mengeksport data dalam format standard dan sentiasa mengemas kini mengikut keperluan yang berkembang, pasukan dapat membina aliran kerja penalaan halus yang efisien dan mesra masa depan. Akhirnya, melaburkan masa dalam penyediaan data membawa kepada model yang lebih stabil, generalisasi yang lebih baik, dan prestasi sebenar yang lebih kukuh.

Rujukan dan Sumber

  • Hasilkan Set Data Anda Sendiri untuk Mencuba Penalaan Halus pada Model GPT
  • Menyediakan Data untuk Penalaan Halus Model Bahasa Besar
  • Penyelarasan Halus LLM: Panduan Dengan Contoh
  • Memahami Peracunan LLM

Terima kasih kerana belajar bersama Komuniti Linux-Console.net.