All Products
Search
Document Center

Platform For AI:Solusi Pengenalan Maksud Berbasis LLM

Last Updated:Mar 03, 2026

Solusi ini memanfaatkan teknologi pengenalan maksud berbasis Large Language Model (LLM) yang mampu mempelajari pola bahasa kompleks dan perilaku pengguna dari data dalam jumlah besar, sehingga menghasilkan pengenalan maksud pengguna yang lebih akurat serta pengalaman interaksi yang lebih alami dan lancar. Dibangun di atas model bahasa besar Qwen1.5, solusi ini menjelaskan proses pengembangan lengkap untuk implementasi solusi pengenalan maksud berbasis LLM.

Informasi latar belakang

Apa itu pengenalan maksud?

Agen AI memahami kebutuhan pengguna yang diekspresikan dalam bahasa alami, lalu melakukan operasi yang sesuai atau memberikan informasi relevan. Kemampuan ini merupakan bagian penting dari sistem interaksi cerdas. Teknologi pengenalan maksud berbasis LLM telah mendapatkan perhatian luas dan kini banyak digunakan.

Skenario khas teknologi pengenalan maksud

  • Pada asisten suara pintar, pengguna berinteraksi menggunakan perintah suara sederhana. Misalnya, jika pengguna mengatakan kepada asisten suara, "Saya ingin mendengarkan musik," sistem harus secara akurat mengidentifikasi maksud pengguna untuk memutar musik dan kemudian menjalankan aksi yang sesuai.

  • Pada layanan pelanggan pintar, tantangannya terletak pada pemrosesan berbagai permintaan layanan pelanggan. Sistem harus dengan cepat dan akurat mengklasifikasikannya ke dalam alur pemrosesan yang berbeda, seperti pengembalian, penukaran, atau keluhan. Sebagai contoh, pada platform e-commerce, pengguna mungkin berkata, "Barang yang saya terima cacat, dan saya ingin mengembalikannya." Di sini, sistem pengenalan maksud berbasis LLM harus segera menangkap maksud pengguna sebagai "pengembalian," lalu secara otomatis memicu proses pengembalian dan memandu pengguna melalui langkah-langkah selanjutnya.

Proses penggunaan

Proses penggunaan solusi pengenalan maksud berbasis LLM adalah sebagai berikut:

image
  1. Siapkan data pelatihan

    Anda dapat menyiapkan set data pelatihan untuk skenario bisnis tertentu dengan merujuk pada persyaratan format data dan strategi persiapan data. Alternatifnya, Anda dapat merujuk pada strategi persiapan data untuk menyiapkan data bisnis, lalu menganotasi data mentah menggunakan iTAG. Ekspor hasil pelabelan dan konversikan ke format data yang didukung oleh PAI-QuickStart untuk pelatihan model selanjutnya.

  2. Latih dan evaluasi model secara offline

    Di QuickStart, Anda dapat melatih model berdasarkan model Qwen1.5-1.8B-Chat. Setelah pelatihan selesai, evaluasi model secara offline.

  3. Terapkan dan panggil layanan model

    Jika hasil evaluasi model memenuhi ekspektasi, Anda dapat menerapkan model yang telah dilatih sebagai layanan online EAS melalui QuickStart.

Prasyarat

Sebelum memulai, lengkapi persiapan berikut:

Siapkan data pelatihan

Siapkan data pelatihan menggunakan salah satu metode berikut:

Strategi persiapan data

Untuk meningkatkan efektivitas dan stabilitas pelatihan, siapkan data menggunakan strategi berikut:

  • Untuk skenario pengenalan maksud tunggal, pastikan jumlah anotasi untuk setiap maksud minimal 50 hingga 100. Jika fine-tuning model tidak efektif, pertimbangkan untuk menambah jumlah data yang dianotasi. Selain itu, pastikan jumlah data yang dianotasi untuk setiap maksud seimbang dan hindari situasi di mana satu maksud memiliki terlalu banyak data anotasi.

  • Untuk skenario pengenalan multi-maksud atau percakapan multi-putaran, jumlah data yang dianotasi yang direkomendasikan minimal 20% dari volume data pada skenario pengenalan maksud tunggal. Selain itu, maksud yang terlibat dalam skenario pengenalan multi-maksud atau percakapan multi-putaran harus pernah muncul dalam skenario pengenalan maksud tunggal.

  • Deskripsi maksud harus mencakup berbagai pertanyaan dan skenario.

Persyaratan format data

Format data pelatihan adalah file berformat JSON yang berisi dua field, `instruction` dan `output`. Field `instruction` berisi instruksi masukan, sedangkan field `output` berisi maksud yang diprediksi model beserta parameter kuncinya. Berikut adalah contoh data pelatihan untuk berbagai skenario pengenalan maksud:

  • Untuk skenario pengenalan maksud tunggal, Anda dapat menyiapkan data bisnis yang sesuai untuk skenario bisnis tertentu. Data ini digunakan untuk pelatihan fine-tuning Large Language Model (LLM). Berikut adalah contoh data pelatihan untuk percakapan satu putaran dalam skenario rumah pintar:

    [
        {
            "instruction": "I want to listen to music",
            "output": "play_music()"
        },
        {
            "instruction": "It is too loud. Lower the volume.",
            "output": "volume_down()"
        },
        {
            "instruction": "I do not want to listen anymore. Stop the music.",
            "output": "music_exit()"
        },
        {
            "instruction": "I want to visit Hangzhou. Check the weather forecast for me.",
            "output": "weather_search(Hangzhou)"
        }
    ]
  • Untuk skenario pengenalan multi-maksud atau percakapan multi-putaran, maksud pengguna mungkin diekspresikan dalam beberapa putaran percakapan. Dalam kasus ini, Anda dapat menyiapkan data percakapan multi-putaran dan menganotasi masukan pengguna multi-putaran tersebut. Sebagai contoh, diberikan alur percakapan multi-putaran untuk asisten suara:

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

    Format data pelatihan percakapan multi-putaran yang sesuai adalah sebagai berikut:

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

Pelatihan model percakapan multi-putaran secara signifikan memperpanjang durasi pelatihan, dan jumlah skenario pengenalan maksud percakapan multi-putaran terbatas dalam aplikasi praktis. Pertimbangkan penggunaan pelatihan model percakapan multi-putaran hanya jika pengenalan maksud percakapan satu putaran tidak dapat memenuhi kebutuhan bisnis aktual. Solusi ini menggunakan percakapan satu putaran sebagai contoh untuk menunjukkan seluruh proses penggunaan.

Anotasi data menggunakan platform iTAG

Anda juga dapat merujuk pada prosedur berikut untuk menganotasi data menggunakan platform PAI-iTAG guna menghasilkan set data pelatihan yang memenuhi persyaratan tertentu.

  1. Daftarkan data untuk anotasi iTAG ke dataset PAI.

    1. Merujuk pada strategi persiapan data, siapkan file data berformat manifes. Contohnya:

      {"data":{"instruction": "I want to listen to music"}}
      {"data":{"instruction": "It is too loud. Lower the volume."}}
      {"data":{"instruction": "I do not want to listen anymore. Stop the music."}}
      {"data":{"instruction": "I want to visit Hangzhou. Check the weather forecast for me."}}
    2. Buka halaman Manajemen Aset AI > Dataset. Pilih ruang kerja target, lalu klik Enter Dataset.

    3. Klik Create Dataset. Konfigurasikan parameter kunci berikut. Untuk detail pengaturan 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. Unggah file manifes yang telah disiapkan sebagai berikut:

      1. Klik tombol image, lalu pada kotak dialog Select OSS file, klik Upload File.

      2. Klik Browse Local Files atau Drag and Drop File to Upload, lalu ikuti petunjuk untuk mengunggah file manifes.

  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. Parameter kunci dijelaskan sebagai berikut. Untuk detail konfigurasi lebih lanjut, lihat Template Management.

    Konfigurasi

    Deskripsi

    Basic Template Canvas Area

    1. Pilih Text, lalu klik Generate Content Card.image

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

    Basic Template Answer Area

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

    image

  4. Pada panel navigasi di sebelah kiri, pilih Management Center > Task Management, lalu klik Create Task pada tab Task Management di sebelah kanan. Setelah mengonfigurasi parameter terkait pada halaman Create Labeling Task, klik Create. Pengaturan konfigurasi kunci dijelaskan di bawah ini. Untuk informasi selengkapnya tentang pengaturan parameter lainnya, lihat Create Labeling Task.

    Parameter

    Deskripsi

    Input data set

    Pilih dataset yang dibuat pada langkah sebelumnya.

    Catatan

    Perhatikan bahwa data masukan harus sesuai dengan templat yang digunakan.

    Template Type

    Pilih Custom Template, lalu dari daftar drop-down Existing Templates, pilih templat yang telah dibuat.

  5. Setelah tugas anotasi dibuat, Anda dapat menganotasi data tersebut. Untuk detailnya, lihat Process annotation tasks.image

  6. Setelah anotasi data selesai, Anda dapat mengekspor hasil anotasi ke direktori OSS. Untuk detailnya, lihat Export annotation result data.

    Dalam solusi ini, berikut adalah contoh isi file manifes output. Untuk deskripsi format data, lihat Overview of annotation data formats.

    {"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 is too loud. Lower the volume.","_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 do not want to listen anymore. Stop the music.","_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 visit Hangzhou. Check the weather forecast for me.","_itag_index":""},"label-1947839552568066048-system":{"fixedFlag":0,"results":[{"MarkResultId":"1947839554971426816","MarkTitle":"Basic Template","MarkResult":"{\"tabId\":\"CommonExtensions\",\"annotations\":[{\"id\":null,\"labels\":{\"output\":\"weather_search(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(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, Anda dapat menggunakan skrip Python berikut untuk mengonversi file hasil anotasi berformat manifes yang dihasilkan ke format data pelatihan yang sesuai 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 JSON data for each line
                data = json.loads(line)
             
                # Extract instruction
                instruction = data['data']['instruction']
              
                # Iterate through all keys starting 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 MarkResult string as JSON
                   
                        # Extract labels["output"] from annotations
                        output = mark_result['annotations'][0]['labels']['output']
                     
                        # Build 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 converted data to 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}")
    

    Output-nya adalah file berformat JSON.

Lakukan pelatihan dan evaluasi model secara offline

Lakukan pelatihan model

QuickStart mengumpulkan model pra-latih unggulan dari komunitas open-source AI. Di QuickStart, Anda dapat menyelesaikan seluruh proses mulai dari pelatihan hingga penerapan dan inferensi tanpa menulis kode, sehingga sangat menyederhanakan pengembangan model.

Solusi ini menggunakan model Qwen1.5-1.8B-Chat sebagai contoh untuk menunjukkan cara menggunakan data pelatihan yang telah disiapkan untuk pelatihan model di QuickStart. Prosedurnya adalah sebagai berikut:

  1. Buka halaman Model Gallery.

    1. Login ke Konsol PAI.

    2. Pada pojok kiri atas, pilih Wilayah.

    3. Pada panel navigasi sebelah kiri, pilih Workspaces, lalu klik nama ruang kerja target untuk memasukinya.

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

  2. Pada halaman QuickStart, di daftar model sebelah kanan, cari dan klik kartu model Qwen1.5-1.8B-Chat untuk membuka halaman detail model.

  3. Pada halaman detail model, klik Train di pojok kanan atas. Lalu, pada panel konfigurasi Train, konfigurasikan parameter kunci berikut dan gunakan konfigurasi default untuk parameter lainnya.

    Parameter

    Deskripsi

    Training Mode

    • Full-parameter fine-tuning: Membutuhkan lebih banyak resource, waktu pelatihan lebih lama, dan umumnya menghasilkan performa lebih baik.

      Catatan

      Model dengan jumlah parameter lebih sedikit mendukung full-parameter fine-tuning. Pilih opsi ini sesuai kebutuhan.

    • QLoRA: Menunjukkan fine-tuning ringan. Dibandingkan dengan full-parameter fine-tuning, metode ini membutuhkan lebih sedikit resource, waktu pelatihan lebih singkat, dan umumnya menghasilkan performa sedikit lebih rendah.

    • LoRA: Sama seperti QLoRA.

    Dataset configuration

    Training dataset

    Pilih set data pelatihan yang telah disiapkan sebagai berikut:

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

    2. Klik tombol image, lalu pilih direktori OSS yang sudah ada.

    3. Pada kotak dialog Select OSS File, klik Upload File, seret dan lepas file set data pelatihan yang telah disiapkan, lalu klik OK.

    Output Configuration

    Model output path

    Pilih direktori OSS untuk menyimpan file konfigurasi output pelatihan dan file model.

    Tensorboard Output Path

    Hyperparameter Configuration

    Untuk deskripsi lengkap hiperparameter, lihat Tabel 1. Deskripsi lengkap hiperparameter.

    Konfigurasikan hiperparameter menggunakan strategi berikut. Untuk rekomendasi konfigurasi hiperparameter kunci untuk metode pelatihan berbeda, lihat Tabel 2. Rekomendasi konfigurasi hiperparameter.

    • Konfigurasikan hiperparameter berdasarkan metode pelatihan.

    • Global batch size = number of cards × per_device_train_batch_size × gradient_accumulation_steps

      • Untuk memaksimalkan performa pelatihan, utamakan peningkatan jumlah kartu dan `per_device_train_batch_size`.

      • Umumnya, atur global batch size antara 64 hingga 256. Kurangi sesuai kebutuhan jika volume data pelatihan kecil.

    • Sesuaikan panjang sekuens (`seq_length`) sesuai kebutuhan. Misalnya, jika panjang sekuens maksimum dalam dataset adalah 50, atur panjang sekuens menjadi 64 (biasanya kelipatan pangkat 2).

    • Jika loss pelatihan menurun terlalu lambat atau tidak konvergen, tingkatkan learning rate (`learning_rate`). Pastikan juga kualitas data pelatihan.

    Tabel 1. Deskripsi lengkap hiperparameter

    Hiperparameter

    Tipe

    Makna

    Nilai Default

    learning_rate

    FLOAT

    Learning rate untuk pelatihan model.

    5e-5

    num_train_epochs

    INT

    Jumlah epoch pelatihan.

    1

    per_device_train_batch_size

    INT

    Jumlah data yang diproses oleh setiap kartu GPU dalam satu iterasi pelatihan.

    1

    seq_length

    INT

    Panjang sekuens teks.

    128

    lora_dim

    INT

    Dimensi LoRA. Saat `lora_dim` > 0, gunakan LoRA atau QLoRA untuk pelatihan ringan.

    32

    lora_alpha

    INT

    Bobot LoRA. Parameter ini berlaku saat `lora_dim` > 0 dan digunakan pelatihan ringan LoRA atau QLoRA.

    32

    load_in_4bit

    BOOL

    Apakah model dimuat dalam 4-bit. Saat `lora_dim` > 0, `load_in_4bit` bernilai true, dan `load_in_8bit` bernilai false, digunakan pelatihan ringan QLoRA 4-bit.

    false

    load_in_8bit

    BOOL

    Apakah model dimuat dalam 8-bit. Saat `lora_dim` > 0, `load_in_4bit` bernilai false, dan `load_in_8bit` bernilai true, digunakan pelatihan ringan QLoRA 8-bit.

    false

    gradient_accumulation_steps

    INT

    Jumlah langkah akumulasi gradien.

    8

    apply_chat_template

    BOOL

    Apakah algoritma menambahkan Chat Template default model ke data pelatihan. Untuk model seri Qwen1.5, formatnya adalah:

    • 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. Ini berlaku saat `apply_chat_template` diatur ke true. Pada pelatihan model seri Qwen1.5, Anda dapat mengonfigurasi `system_prompt` khusus agar LLM memainkan peran tertentu. Algoritma secara otomatis memperluas data pelatihan, sehingga Anda tidak perlu fokus pada detail eksekusi. Misalnya, atur `system_prompt` menjadi 'You are an intent recognition expert who can identify the intent from user questions and return the corresponding intent and parameters.' Dalam kasus ini, diberikan sampel pelatihan:

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

    Format data aktual yang digunakan untuk pelatihan adalah sebagai berikut:

    <|im_start|>system\nYou are an intent recognition expert. You can detect user intents and return the corresponding function calls 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. Rekomendasi konfigurasi hiperparameter

    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 tombol Fine-tune, lalu klik OK pada kotak dialog Billing Notification.

    Sistem secara otomatis mengarahkan ke halaman detail pekerjaan pelatihan. Saat pekerjaan pelatihan berhasil dimulai, Anda dapat melihat status pekerjaan pelatihan dan log pelatihan pada halaman ini.image

Evaluasi model secara offline

Setelah pelatihan model selesai, Anda dapat menggunakan skrip Python di terminal untuk mengevaluasi performa model.

  1. Siapkan file data evaluasi `testdata.json`. Contohnya:

    [
        {
            "instruction": "Who sings the song 'Ten Years'?",
            "output": "music_query_player(Ten Years)"
        },
        {
            "instruction": "What is the weather like in Hangzhou today?",
            "output": "weather_search(Hangzhou)"
        }
    ]
  2. Di terminal, Anda dapat menggunakan skrip Python berikut 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 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 training data path
    test_data = json.load(open('/mnt/workspace/data/testdata.json'))
    system_prompt = 'You are an intent recognition expert. You can detect user intents and return the corresponding function calls 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 hasil eksekusi kode mengembalikan pesan prompt Using low_cpu_mem_usage=True or a device_map requires Accelerate: pip install accelerate, ikuti petunjuk tersebut untuk menjalankan pip install accelerate guna menginstal library dependensi.

Terapkan dan panggil layanan model

Terapkan layanan model

Saat hasil evaluasi model memenuhi ekspektasi, Anda dapat menggunakan prosedur berikut untuk menerapkan model yang telah dilatih sebagai layanan online EAS.

  1. Pada halaman Task details, klik Deploy di pojok kanan atas. Sistem telah mengonfigurasi informasi dasar dan resource secara otomatis. Pilih Deployment Method sebagai vLLM Accelerated Deployment. Anda dapat mengubah pengaturan ini sesuai kebutuhan. Setelah menyelesaikan pengaturan parameter, klik tombol Deploy.

  2. Pada kotak dialog Billing Notification, klik OK.

    Anda akan secara otomatis diarahkan ke halaman tugas penerapan. Penerapan layanan berhasil ketika Status berubah menjadi Running.

Panggil layanan model

Contoh pemanggilan API berikut menunjukkan cara menginisiasi permintaan pemanggilan melalui klien:

  1. Anda dapat memperoleh Titik akhir layanan dan Token.

    1. Pada halaman Service details, pada bagian Basic Information, klik View Endpoint Information. image

    2. Pada kotak dialog Invocation Information, peroleh Titik akhir layanan dan Token, lalu simpan secara lokal.

  2. Menggunakan vLLM accelerate deployment sebagai contoh, kode pemanggilannya adalah sebagai berikut. Anda dapat menjalankan kode ini di terminal untuk memanggil layanan.

    from openai import OpenAI
    
    ##### API Configuration #####
    openai_api_key = "<EAS_SERVICE_TOKEN>"
    openai_api_base = "<EAS_SERVICE_URL>/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 intent recognition expert who can identify the intent from user questions 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()
    

    Di mana:

    • <EAS_SERVICE_URL>: Atur ini ke Titik akhir layanan yang diperoleh.

    • <EAS_SERVICE_TOKEN>: Atur ini ke Token layanan yang diperoleh.

Referensi

  • Untuk informasi selengkapnya tentang proses penggunaan iTAG dan persyaratan format data anotasi, lihat iTAG.

  • Untuk informasi selengkapnya tentang produk EAS, lihat Elastic Algorithm Service (EAS).

  • Dengan menggunakan fitur QuickStart, Anda dapat dengan mudah menyelesaikan tugas penerapan dan fine-tuning untuk lebih banyak skenario, termasuk model seri Llama-3, Qwen1.5, Stable Diffusion V1.5, dan lainnya. Untuk informasi selengkapnya, lihat Ringkasan Studi Kasus Model Gallery.