All Products
Search
Document Center

Platform For AI:Solusi pengenalan maksud berbasis LLM

Last Updated:Jun 22, 2026

Solusi ini menggunakan pengenalan maksud yang didukung oleh model bahasa besar (large language model/LLM). Dengan mempelajari pola bahasa kompleks dan perilaku pengguna dari kumpulan data yang sangat besar, solusi ini memberikan pengenalan maksud yang lebih akurat serta pengalaman pengguna yang alami dan lancar. Panduan ini menjelaskan cara mengembangkan solusi pengenalan maksud menggunakan model bahasa besar Qwen1.5.

Informasi latar belakang

Pengenalan maksud

Pengenalan maksud memungkinkan agen AI memahami permintaan pengguna dalam bahasa alami, lalu melakukan aksi yang sesuai atau memberikan informasi relevan. Ini merupakan komponen kunci dalam sistem interaktif cerdas. Saat ini, teknologi pengenalan maksud berbasis model bahasa besar (LLM) telah banyak digunakan di industri.

Kasus penggunaan

  • Dengan asisten suara pintar, pengguna berinteraksi melalui perintah suara sederhana. Misalnya, jika pengguna mengatakan, "Saya ingin mendengarkan musik," sistem harus secara akurat mengidentifikasi maksud untuk memutar musik, lalu menjalankan aksi yang sesuai.

  • Dalam skenario layanan pelanggan cerdas, tantangannya adalah memproses berbagai permintaan pelanggan dan mengarahkannya secara tepat ke alur kerja yang sesuai, seperti pengembalian, penukaran, atau keluhan. Sebagai contoh, pada platform e-commerce, pengguna mungkin berkata, "Produk yang saya terima cacat. Saya ingin mengembalikannya." Dalam kasus ini, sistem pengenalan maksud berbasis LLM harus segera menangkap maksud pengguna sebagai "pengembalian", secara otomatis memicu proses pengembalian, dan memandu pengguna melalui langkah-langkah selanjutnya.

Alur kerja

  1. Siapkan data pelatihan

    Anda dapat menyiapkan set data pelatihan untuk skenario bisnis spesifik Anda sesuai dengan format data dan strategi persiapan yang ditentukan. Atau, Anda dapat menyiapkan data bisnis Anda dan menggunakan iTAG untuk memberi label pada data mentah tersebut. Ekspor hasil pelabelan dan konversikan ke format yang didukung oleh PAI-QuickStart untuk pelatihan model.

  2. Latih model dan lakukan evaluasi offline

    Di QuickStart, latih model berdasarkan Qwen1.5-1.8B-Chat. Setelah model dilatih, lakukan evaluasi offline.

  3. Terapkan dan panggil layanan model

    Jika hasil evaluasi memuaskan, gunakan QuickStart untuk menerapkan model yang telah dilatih sebagai layanan online EAS.

Prasyarat

Pastikan Anda telah menyelesaikan hal-hal berikut:

  • Anda telah mengaktifkan bayar sesuai penggunaan untuk PAI (DLC dan EAS) dan membuat ruang kerja default. Untuk informasi selengkapnya, lihat Aktifkan PAI dan buat ruang kerja default.

  • Anda telah membuat bucket OSS untuk menyimpan data pelatihan dan file model. Untuk informasi selengkapnya tentang cara membuat bucket, lihat Panduan cepat mulai Konsol.

Siapkan data pelatihan

Anda dapat menyiapkan data pelatihan dengan salah satu dari dua cara berikut:

Strategi persiapan data

Untuk meningkatkan efektivitas dan stabilitas pelatihan model, ikuti strategi berikut saat menyiapkan data Anda:

  • Untuk skenario pengenalan maksud tunggal, pastikan setiap kategori maksud memiliki minimal 50 hingga 100 contoh berlabel. Jika hasil fine-tuning model tidak memuaskan, pertimbangkan untuk menambah jumlah data berlabel. Selain itu, pastikan data seimbang di seluruh kategori maksud. Hindari adanya satu kategori yang memiliki data jauh lebih banyak daripada kategori lainnya.

  • Untuk skenario multi-maksud atau dialog multi-putaran, gunakan setidaknya 20% lebih banyak data berlabel dibandingkan skenario maksud tunggal. Selain itu, semua maksud yang digunakan dalam skenario multi-maksud atau multi-putaran juga harus didefinisikan dalam data maksud tunggal Anda.

  • Deskripsi maksud harus mencakup berbagai variasi frasa dan skenario.

Format data

Data pelatihan harus berupa file JSON yang berisi bidang instruction dan output. Bidang instruction berisi instruksi masukan, sedangkan bidang output berisi maksud yang diprediksi model beserta parameter utamanya. Contoh berikut menunjukkan data pelatihan untuk berbagai skenario pengenalan maksud.

  • Untuk skenario pengenalan maksud tunggal, Anda perlu menyiapkan data spesifik bisnis untuk fine-tuning model bahasa besar (LLM). Sebagai contoh, berikut adalah data pelatihan sampel untuk dialog satu putaran dalam skenario rumah pintar:

    [
        {
            "instruction": "I want to listen to music",
            "output": "play_music()"
        },
        {
            "instruction": "It's too loud, turn the volume down",
            "output": "volume_down()"
        },
        {
            "instruction": "I don't want to listen anymore, turn it off",
            "output": "music_exit()"
        },
        {
            "instruction": "I want to travel to Hangzhou, help me check the weather forecast",
            "output": "weather_search(China (Hangzhou))"
        },
    ]
  • Untuk skenario multi-maksud atau dialog multi-putaran, maksud pengguna mungkin diekspresikan dalam beberapa putaran percakapan. Dalam kasus seperti ini, Anda dapat menyiapkan data dialog multi-putaran dan memberi label pada masukan pengguna dari semua putaran yang relevan. Sebagai contoh, pertimbangkan dialog multi-putaran berikut dengan asisten suara:

    User: I want to listen to music.
    Assistant: What type of music?
    User: Play some *** music for me.
    Assistant: play_music(***)

    Data pelatihan yang sesuai untuk dialog multi-putaran ini diformat sebagai berikut:

    [
        {
            "instruction": "I want to listen to music. Play some *** music for me.",
            "output": "play_music(***)"
        }
    ]

Melatih model pada dialog multi-putaran secara signifikan meningkatkan panjang masukan, dan skenario semacam ini jarang ditemui dalam praktik. Pertimbangkan pelatihan dialog multi-putaran hanya jika pengenalan maksud satu putaran tidak memenuhi kebutuhan bisnis Anda. Solusi ini menggunakan contoh dialog satu putaran untuk menunjukkan prosesnya.

Gunakan PAI-iTAG untuk memberi label data

Sebagai alternatif, gunakan platform PAI-iTAG untuk memberi label data dan menghasilkan set data pelatihan dalam format yang diperlukan.

  1. Daftarkan data yang akan diberi label di iTAG sebagai dataset PAI.

    1. Siapkan file data dalam format manifes sesuai dengan strategi persiapan data. Berikut adalah contohnya.

      {"data":{"instruction": "I want to listen to music"}}
      {"data":{"instruction": "It's too loud, turn the volume down"}}
      {"data":{"instruction": "I don't want to listen anymore, turn it off"}}
      {"data":{"instruction": "I want to travel to Hangzhou, help me check the weather forecast"}}
    2. Buka halaman Manajemen Aset AI > Dataset, pilih ruang kerja target, lalu klik Go to Dataset.

    3. Klik Create Dataset dan konfigurasikan parameter utama berikut. Untuk detail parameter lainnya, lihat Buat dan kelola dataset.

      Parameter

      Deskripsi

      Storage Type

      Pilih Alibaba Cloud Object Storage Service (OSS).

      Import Format

      Pilih File.

      OSS Path

      Pilih direktori OSS yang sudah ada dan unggah file manifes yang telah disiapkan dengan mengikuti langkah-langkah berikut:

      1. Klik ikon image. Di kotak dialog Select OSS file, klik Upload File.

      2. Klik Browse Local Files atau Drag and Drop File to Upload, lalu unggah file manifes sesuai petunjuk.

  2. Buka halaman Persiapan Data > iTAG, klik Go to Management Page, lalu beralih ke tab Template Management.

  3. Klik Create Template, pilih Custom Template > Basic Templates, lalu klik Edit. Setelah mengonfigurasi parameter, klik Save Template Name. Tabel berikut menjelaskan konfigurasi utama. Untuk informasi selengkapnya tentang konfigurasi lainnya, lihat manajemen templat.

    Konfigurasi

    Deskripsi

    Area kanvas templat dasar

    1. Pilih Text lalu klik Generate Content Card.

    2. Klik area teks. Di kotak dialog Import Dataset, pilih dataset yang sudah ada. Kemudian, di area Basic Template Configuration di sebelah kanan, pilih Dataset Field Name > instruction.

    Area jawaban templat dasar

    Pilih Input Field lalu klik Generate Title Card. Kemudian, ubah Title menjadi output.

  4. Di panel navigasi sebelah kiri, pilih Management Center > Task Management. Di tab Task Management, klik Create Task. Di halaman Create Annotation Task, konfigurasikan parameter lalu klik Create. Tabel berikut menjelaskan parameter utama. Untuk detail parameter lainnya, lihat Buat tugas pelabelan.

    Parameter

    Deskripsi

    Input data set

    Pilih dataset yang Anda buat pada langkah sebelumnya.

    Catatan

    Pastikan data masukan sesuai dengan templat yang Anda gunakan.

    Template Type

    Pilih Custom Template lalu pilih templat yang Anda buat dari daftar drop-down.

  5. Setelah tugas dibuat, mulailah memberi label pada data. Untuk informasi selengkapnya, lihat Proses tugas pelabelan.

  6. Setelah selesai memberi label pada data, ekspor hasilnya ke direktori OSS. Untuk informasi selengkapnya, lihat Ekspor data berlabel.

    File manifes output akan mirip dengan contoh berikut. Untuk informasi selengkapnya tentang format data, lihat Ikhtisar format data berlabel.

    {"data":{"instruction":"I want to listen to music","_itag_index":""},"label-1947839552568066048-system":{"fixedFlag":0,"results":[{"MarkResultId":"1947839554911772672","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"play_music()\"},\"exif\":null}],\"type\":\"CommonExtensions\",\"version\":\"v2\"}","QuestionId":"CommonExtensions","ResultType":"OPEN_GROUP","Progress":null,"Version":"1753236185165","MarkTime":"Wed Jul 23 10:03:05 CST 2025","UserMarkResultId":null,"IsNeedVoteJudge":false}],"abandonFlag":0},"label-1947839552568066048":{"results":[{"MarkResultId":"1947839554911772672","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"play_music()\"},\"exif\":null}],\"type\":\"CommonExtensions\",\"version\":\"v2\"}","QuestionId":"CommonExtensions","ResultType":"OPEN_GROUP","Progress":null,"Version":"1753236185165","MarkTime":"Wed Jul 23 10:03:05 CST 2025","UserMarkResultId":"1947839763671740416","IsNeedVoteJudge":false}]},"abandonFlag":0,"abandonRemark":null}
    {"data":{"instruction":"It's too loud, turn the volume down","_itag_index":""},"label-1947839552568066048-system":{"fixedFlag":0,"results":[{"MarkResultId":"1947839554891464704","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"volume_down()\"},\"exif\":null}],\"type\":\"CommonExtensions\",\"version\":\"v2\"}","QuestionId":"CommonExtensions","ResultType":"OPEN_GROUP","Progress":null,"Version":"1753236198979","MarkTime":"Wed Jul 23 10:03:19 CST 2025","UserMarkResultId":null,"IsNeedVoteJudge":false}],"abandonFlag":0},"label-1947839552568066048":{"results":[{"MarkResultId":"1947839554891464704","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"volume_down()\"},\"exif\":null}],\"type\":\"CommonExtensions\",\"version\":\"v2\"}","QuestionId":"CommonExtensions","ResultType":"OPEN_GROUP","Progress":null,"Version":"1753236198979","MarkTime":"Wed Jul 23 10:03:19 CST 2025","UserMarkResultId":"1947839868520656896","IsNeedVoteJudge":false}]},"abandonFlag":0,"abandonRemark":null}
    {"data":{"instruction":"I don't want to listen anymore, turn it off","_itag_index":""},"label-1947839552568066048-system":{"fixedFlag":0,"results":[{"MarkResultId":"1947839554992373760","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"music_exit()\"},\"exif\":null}],\"type\":\"CommonExtensions\",\"version\":\"v2\"}","QuestionId":"CommonExtensions","ResultType":"OPEN_GROUP","Progress":null,"Version":"1753236212152","MarkTime":"Wed Jul 23 10:03:32 CST 2025","UserMarkResultId":null,"IsNeedVoteJudge":false}],"abandonFlag":0},"label-1947839552568066048":{"results":[{"MarkResultId":"1947839554992373760","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"music_exit()\"},\"exif\":null}],\"type\":\"CommonExtensions\",\"version\":\"v2\"}","QuestionId":"CommonExtensions","ResultType":"OPEN_GROUP","Progress":null,"Version":"1753236212152","MarkTime":"Wed Jul 23 10:03:32 CST 2025","UserMarkResultId":"1947839936657285120","IsNeedVoteJudge":false}]},"abandonFlag":0,"abandonRemark":null}
    {"data":{"instruction":"I want to travel to Hangzhou, help me check the weather forecast","_itag_index":""},"label-1947839552568066048-system":{"fixedFlag":0,"results":[{"MarkResultId":"1947839554971426816","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"weather_search(China (Hangzhou))\"},\"exif\":null}],\"type\":\"CommonExtensions\",\"version\":\"v2\"}","QuestionId":"CommonExtensions","ResultType":"OPEN_GROUP","Progress":null,"Version":"1753236218730","MarkTime":"Wed Jul 23 10:03:39 CST 2025","UserMarkResultId":null,"IsNeedVoteJudge":false}],"abandonFlag":0},"label-1947839552568066048":{"results":[{"MarkResultId":"1947839554971426816","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"weather_search(China (Hangzhou))\"},\"exif\":null}],\"type\":\"CommonExtensions\",\"version\":\"v2\"}","QuestionId":"CommonExtensions","ResultType":"OPEN_GROUP","Progress":null,"Version":"1753236218730","MarkTime":"Wed Jul 23 10:03:39 CST 2025","UserMarkResultId":"1947839975890939904","IsNeedVoteJudge":false}]},"abandonFlag":0,"abandonRemark":null}
  7. Di terminal, jalankan skrip Python berikut untuk mengonversi file manifes data berlabel ke format data pelatihan yang diperlukan untuk QuickStart.

    import json
    # Input and output file paths
    input_file_path = 'test_json.manifest'
    output_file_path = 'train.json'
    converted_data = []
    with open(input_file_path, 'r', encoding='utf-8') as file:
        for line in file:
            try:
                # Parse the JSON data from each line
                data = json.loads(line)
                # Extract the instruction
                instruction = data['data']['instruction']
                # Iterate through all keys that start with "label-"
                for key in data.keys():
                    if key.startswith('label-'):
                        # Extract MarkResult and parse its content
                        mark_result_str = data[key]['results'][0]['MarkResult']
                        mark_result = json.loads(mark_result_str)  # Parse the MarkResult string as JSON
                        # Extract labels["output"] from annotations
                        output = mark_result['annotations'][0]['labels']['output']
                        # Construct the new data structure
                        converted_data.append({
                            'instruction': instruction,
                            'output': output
                        })
                        break
            except Exception as e:
                print(f"Error processing line: {line.strip()}. Error: {e}")
    # Write the converted data to the output file
    with open(output_file_path, 'w', encoding='utf-8') as outfile:
        json.dump(converted_data, outfile, ensure_ascii=False, indent=4)
    print(f"Conversion completed. Output saved to {output_file_path}")
    

Lakukan pelatihan dan evaluasi model

Lakukan pelatihan model

QuickStart menyediakan model pra-latih unggulan dari komunitas AI open-source. Fitur ini memungkinkan Anda mengelola seluruh alur kerja pengembangan model—mulai dari pelatihan, penerapan, hingga inferensi—tanpa perlu menulis kode apa pun.

Panduan ini menggunakan model Qwen1.5-1.8B-Chat sebagai contoh untuk menunjukkan cara melatih model di QuickStart dengan data pelatihan Anda. Langkah-langkahnya sebagai berikut:

  1. Buka halaman Model Gallery.

    1. Login ke Konsol PAI.

    2. Di pojok kiri atas, pilih wilayah.

    3. Di panel navigasi sebelah kiri, pilih Workspaces. Klik ruang kerja target.

    4. Di panel navigasi sebelah kiri, pilih QuickStart > Model Gallery.

  2. Di halaman QuickStart, temukan dan klik kartu model Qwen1.5-1.8B-Chat di daftar model sebelah kanan.

  3. Di halaman detail model, klik Train di pojok kanan atas. Di panel konfigurasi Train, konfigurasikan parameter utama berikut dan biarkan sisanya tetap pada nilai default.

    Parameter

    Deskripsi

    Training Mode

    • full-parameter fine-tuning: Metode ini membutuhkan banyak sumber daya dan waktu, tetapi umumnya menghasilkan performa lebih baik.

      Catatan

      Model dengan jumlah parameter lebih sedikit mendukung full-parameter fine-tuning. Pilih metode ini berdasarkan kebutuhan spesifik Anda.

    • QLoRA: Metode fine-tuning ringan yang memerlukan lebih sedikit sumber daya dan waktu pelatihan dibandingkan full-parameter fine-tuning, meskipun hasilnya mungkin kurang optimal.

    • LoRA: Mirip dengan QLoRA, ini adalah metode fine-tuning ringan.

    Dataset configuration

    Training dataset

    Ikuti langkah-langkah berikut untuk memilih set data pelatihan Anda.

    1. Dari daftar drop-down, pilih OSS file or directory.

    2. Klik ikon Browse image untuk memilih direktori OSS Anda.

    3. Di kotak dialog Select OSS File, klik Upload File, seret dan lepas file set data pelatihan Anda, lalu klik OK.

    Output Configuration

    Model output path

    Pilih direktori OSS untuk menyimpan file konfigurasi dan model yang dihasilkan oleh pekerjaan pelatihan.

    Tensorboard Output Path

    Hyperparameter Configuration

    Untuk deskripsi lengkap semua hiperparameter, lihat Tabel 1. Referensi hiperparameter.

    Gunakan strategi berikut untuk mengonfigurasi hiperparameter. Untuk pengaturan hiperparameter utama yang direkomendasikan untuk berbagai metode pelatihan, lihat Tabel 2. Konfigurasi hiperparameter yang direkomendasikan.

    • Pastikan Anda mengonfigurasi hiperparameter berdasarkan metode pelatihan yang dipilih.

    • global batch size = Number of GPUs * per_device_train_batch_size * gradient_accumulation_steps

      • Untuk memaksimalkan performa pelatihan, prioritaskan peningkatan jumlah GPU dan per_device_train_batch_size.

      • Umumnya, atur global batch size ke nilai antara 64 dan 256. Jika set data pelatihan Anda sangat kecil, Anda dapat menggunakan nilai yang lebih rendah.

    • Panjang sekuens (seq_length) dapat disesuaikan berdasarkan skenario spesifik Anda. Misalnya, jika panjang sekuens maksimum dalam set data Anda adalah 50, Anda dapat mengatur panjang sekuens menjadi 64, yang biasanya merupakan pangkat dari 2.

    • Jika loss pelatihan menurun terlalu lambat atau tidak konvergen, pertimbangkan untuk meningkatkan tingkat pembelajaran (learning_rate). Pastikan juga kualitas data pelatihan Anda.

    Tabel 1. Hiperparameter

    Parameter

    Tipe

    Deskripsi

    Default

    learning_rate

    FLOAT

    Tingkat pembelajaran untuk pelatihan model.

    5e-5

    num_train_epochs

    INT

    Jumlah epoch pelatihan.

    1

    per_device_train_batch_size

    INT

    Ukuran batch pelatihan untuk setiap GPU.

    1

    seq_length

    INT

    Panjang sekuens maksimum untuk masukan model.

    128

    lora_dim

    INT

    Dimensi LoRA. Ketika lora_dim > 0, fine-tuning ringan dengan LoRA atau QLoRA digunakan.

    32

    lora_alpha

    INT

    Faktor penskalaan LoRA. Parameter ini berlaku untuk fine-tuning ringan LoRA atau QLoRA ketika lora_dim > 0.

    32

    load_in_4bit

    BOOL

    Jika true, memuat model dasar dalam presisi 4-bit. Ini mengaktifkan QLoRA 4-bit ketika lora_dim > 0 dan load_in_8bit bernilai false.

    false

    load_in_8bit

    BOOL

    Jika true, memuat model dasar dalam presisi 8-bit. Ini mengaktifkan QLoRA 8-bit ketika lora_dim > 0 dan load_in_4bit bernilai false.

    false

    gradient_accumulation_steps

    INT

    Jumlah langkah akumulasi gradien.

    8

    apply_chat_template

    BOOL

    Menentukan apakah algoritma menambahkan Chat Template default model ke data pelatihan. Untuk model seri Qwen1.5, formatnya sebagai berikut:

    • Pertanyaan: <|im_start|>user\n + instruction + <|im_end|>\n

    • Jawaban: <|im_start|>assistant\n + output + <|im_end|>\n

    true

    system_prompt

    STRING

    Prompt sistem default untuk pelatihan model. Parameter ini berlaku ketika apply_chat_template diatur ke true. Saat melatih model seri Qwen1.5, Anda dapat mengonfigurasi system_prompt khusus untuk memberikan peran tertentu kepada model bahasa besar. Algoritma secara otomatis memperluas data pelatihan, sehingga Anda tidak perlu mengelola detailnya. Sebagai contoh, jika Anda mengatur system_prompt menjadi "You are an expert in intent recognition. You can identify the user's intent from their question and return the corresponding function calling and parameters." Untuk sampel pelatihan berikut:

    [
        {
            "instruction": "I want to listen to music",
            "output": "play_music()"
        }
    ]

    Data aktual yang digunakan untuk pelatihan diformat sebagai berikut:

    <|im_start|>system\nYou are an expert in intent recognition. You can identify the user's intent from their question and return the corresponding function calling and parameters<|im_end|>\n<|im_start|>user\nI want to listen to music<|im_end|>\n<|im_start|>assistant\nplay_music()<|im_end|>\n

    You are a helpful assistant

    Tabel 2. Hiperparameter yang direkomendasikan

    Parameter

    Full-parameter fine-tuning

    LoRA/QLoRA

    learning_rate

    5e-6, 5e-5

    3e-4

    global batch size

    256

    256

    seq_length

    256

    256

    num_train_epochs

    3

    5

    lora_dim

    0

    64

    lora_alpha

    0

    16

    load_in_4bit

    false

    true/false

    load_in_8bit

    false

    true/false

  4. Klik Fine-tune, lalu klik OK di kotak dialog Billing Notification.

    Anda akan diarahkan secara otomatis ke halaman detail pekerjaan pelatihan. Setelah pekerjaan dibuat, statusnya berubah menjadi Running. Halaman ini menampilkan progres pekerjaan melalui beberapa tahap: Creating, Preparing Environment, dan Running. Informasi dasar yang ditampilkan mencakup model pra-latih qwen1.5-1.8b-chat, metode pelatihan SFT supervised fine-tuning: LoRA, dan kategori pekerjaan Generative AI / large language model. Anda dapat melihat detail seperti jalur masukan, jalur keluaran, dan konfigurasi hiperparameter di tab Task Details, Task Log, dan Task Monitoring.

Evaluasi model

Setelah pelatihan selesai, Anda dapat mengevaluasi performa model dengan menjalankan skrip Python di terminal.

  1. Siapkan file data evaluasi bernama testdata.json. Berikut adalah contohnya:

    [
        {
            "instruction": "Who sings the song 'Ten Years'?",
            "output": "music_query_player(Ten Years)"
        },
        {
            "instruction": "What's the weather like in Hangzhou today?",
            "output": "weather_search(Hangzhou)"
        }
    ]
  2. Jalankan skrip Python berikut di terminal untuk mengevaluasi model secara offline.

    #encoding=utf-8
    from transformers import AutoModelForCausalLM, AutoTokenizer
    import json
    from tqdm import tqdm
    device = "cuda" # the device to load the model onto
    # Modify the model path
    model_name = '/mnt/workspace/model/qwen14b-lora-3e4-256-train/'
    print(model_name)
    model = AutoModelForCausalLM.from_pretrained(
        model_name,
        torch_dtype="auto",
        device_map="auto"
    )
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    count = 0
    ecount = 0
    # Modify the training data path
    test_data = json.load(open('/mnt/workspace/data/testdata.json'))
    system_prompt = 'You are an expert in intent recognition. You can identify the user\'s intent from their question and return the corresponding function calling and parameters.'
    for i in tqdm(test_data[:]):
        prompt = '<|im_start|>system\n' + system_prompt + '<|im_end|>\n<|im_start|>user\n' + i['instruction'] + '<|im_end|>\n<|im_start|>assistant\n'
        gold = i['output']
        gold = gold.split(';')[0] if ';' in gold else gold
        model_inputs = tokenizer([prompt], return_tensors="pt").to(device)
        generated_ids = model.generate(
            model_inputs.input_ids,
            max_new_tokens=64,
            pad_token_id=tokenizer.eos_token_id,
            eos_token_id=tokenizer.eos_token_id,
            do_sample=False
        )
        generated_ids = [
            output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
        ]
        pred = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
        if gold.split('(')[0] == pred.split('(')[0]:
            count += 1
            gold_list = set(gold.strip()[:-1].split('(')[1].split(','))
            pred_list = set(pred.strip()[:-1].split('(')[1].split(','))
            if gold_list == pred_list:
                ecount += 1
        else:
            pass
    print("Intent recognition accuracy:", count/len(test_data))
    print("Parameter recognition accuracy:", ecount/len(test_data))
    Catatan

    Jika eksekusi kode mengembalikan pesan Using low_cpu_mem_usage=True or a device_map requires Accelerate: pip install accelerate, jalankan pip install accelerate untuk menginstal dependensi yang diperlukan.

Terapkan dan panggil layanan model

Terapkan layanan model

Jika hasil evaluasi model memenuhi ekspektasi Anda, Anda dapat menerapkan model sebagai layanan online EAS.

  1. Di halaman Task details, klik Deploy di pojok kanan atas. Sistem akan mengisi informasi dasar dan sumber daya secara otomatis. Untuk Deployment Method, pilih vLLM accelerated deployment. Anda dapat mengubah pengaturan ini sesuai kebutuhan. Setelah mengonfigurasi parameter, klik Deploy.

  2. Di kotak dialog Billing Notification, klik OK.

    Sistem akan mengarahkan Anda secara otomatis ke halaman tugas penerapan. Ketika Status berubah menjadi Running, penerapan berhasil.

Panggil layanan model

Contoh berikut menunjukkan cara memanggil API dari klien:

  1. Dapatkan endpoint dan token.

    1. Di halaman Service details, di bagian Basic Information, klik View Endpoint Information.

    2. Di kotak dialog Invocation Information, temukan endpoint dan token, lalu simpan secara lokal.

  2. Berikut adalah contoh kode untuk vLLM accelerated deployment. Jalankan kode ini di terminal untuk memanggil layanan.

    from openai import OpenAI
    ##### API Configuration #####
    openai_api_key = "<YOUR_EAS_SERVICE_TOKEN>"
    openai_api_base = "<YOUR_EAS_SERVICE_ENDPOINT>/v1/"
    client = OpenAI(
        api_key=openai_api_key,
        base_url=openai_api_base,
    )
    models = client.models.list()
    model = models.data[0].id
    print(model)
    def main():
        stream = True
        chat_completion = client.chat.completions.create(
            messages=[
                 {
                    "role": "system",
                    "content": [
                        {
                            "type": "text",
                            "text": "You are an expert in intent recognition. You can identify the user's intent based on their question and return the corresponding intent and parameters.",
                        }
                    ],
                },
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "text",
                            "text": "I want to listen to music",
                        }
                    ],
                }
            ],
            model=model,
            max_completion_tokens=2048,
            stream=stream,
        )
        if stream:
            for chunk in chat_completion:
                print(chunk.choices[0].delta.content, end="")
        else:
            result = chat_completion.choices[0].message.content
            print(result)
    if __name__ == "__main__":
        main()
    

    Keterangan:

    • <YOUR_EAS_SERVICE_ENDPOINT>: Ganti dengan endpoint layanan Anda.

    • <YOUR_EAS_SERVICE_TOKEN>: Ganti dengan token layanan Anda.

Dokumen terkait