Model bahasa besar (LLM) adalah model jaringan saraf dengan ratusan juta parameter, seperti Generative Pre-Trained Transformer 3 (GPT-3), GPT-4, Pathways Language Model (PaLM), dan PaLM 2. Saat memproses sejumlah besar data bahasa alami atau membangun sistem pemahaman bahasa yang kompleks, Anda dapat menggunakan LLM sebagai layanan inferensi dan memanggil API untuk mengintegrasikan kemampuan pemrosesan bahasa alami (NLP) tingkat lanjut, seperti klasifikasi teks, analisis sentimen, dan penerjemahan mesin, ke dalam aplikasi Anda. Dengan pendekatan LLM-sebagai-layanan, Anda tidak perlu membayar biaya infrastruktur yang tinggi dan dapat merespons perubahan pasar dengan cepat. Selain itu, Anda dapat memperluas layanan kapan saja untuk menangani lonjakan permintaan pengguna serta meningkatkan efisiensi operasional karena LLM berjalan di cloud.
Prasyarat
Fitur Model Service Mesh (selanjutnya disebut ModelMesh) harus diaktifkan di instance Service Mesh (ASM) Anda, dan lingkungan ASM harus dikonfigurasi. Untuk informasi lebih lanjut, lihat Langkah 1 dan Langkah 2 di Gunakan ModelMesh untuk Meluncurkan Layanan Inferensi Multi-Model.
Anda telah mempelajari cara menggunakan ModelMesh untuk membuat runtime penyajian model kustom. Untuk informasi lebih lanjut, lihat Gunakan ModelMesh untuk Membuat Runtime Penyajian Model Kustom.
Langkah 1: Bangun runtime kustom
Bangun runtime kustom untuk menyajikan Hugging Face LLM dengan konfigurasi pengaturan prompt. Dalam contoh ini, nilai default diatur ke gambar runtime kustom pra-dibangun dan konfigurasi pengaturan prompt pra-dibangun.
Implementasikan kelas yang mewarisi dari kelas MLModel MLServer.
File peft_model_server.py berisi semua kode tentang cara menyajikan Hugging Face LLM dengan konfigurasi pengaturan prompt. Fungsi
_load_modeldalam file digunakan untuk memilih model LLM pra-latih dengan konfigurasi pengaturan prompt PEFT yang dilatih. Fungsi_load_modeljuga mendefinisikan tokenizer yang dapat mengkodekan dan mendekodekan input string mentah dari permintaan inferensi tanpa meminta pengguna untuk memproses input mereka menjadi byte tensor.Bangun Gambar Docker.
Setelah kelas model diimplementasikan, Anda perlu mengemas dependensinya, termasuk MLServer, ke dalam gambar yang didukung sebagai sumber daya ServingRuntime. Anda dapat merujuk pada Dockerfile berikut untuk membangun gambar:
Buat Sumber Daya ServingRuntime Baru.
Buat sumber daya ServingRuntime baru dengan menggunakan konten berikut dan arahkan ke gambar yang Anda buat.
Jalankan perintah berikut untuk menyebarkan sumber daya ServingRuntime:
kubectl apply -f sample-runtime.yamlSetelah membuat sumber daya ServingRuntime, Anda dapat melihat runtime kustom baru di penyebaran ModelMesh Anda.
Langkah 2: Sebarkan layanan LLM
Untuk menyebarkan model menggunakan runtime yang baru dibuat, Anda harus membuat sumber daya InferenceService untuk menyajikan model. Sumber daya ini merupakan antarmuka utama yang digunakan oleh KServe dan ModelMesh untuk mengelola model. Ini mewakili titik akhir logis model untuk menyajikan inferensi.
Buat sumber daya InferenceService untuk menyajikan model dengan menggunakan konten berikut:
Dalam file YAML, sumber daya InferenceService diberi nama
peft-demodan format modelnya dinyatakan sebagaipeft-model, yang merupakan format yang sama dengan runtime kustom contoh yang dibuat pada langkah sebelumnya. Bidang opsionalruntimejuga dilewatkan, secara eksplisit memerintahkan ModelMesh untuk menggunakan runtimepeft-model-serveruntuk menyebarkan model ini.Jalankan perintah berikut untuk menyebarkan sumber daya InferenceService:
kubectl apply -f ${Nama file YAML}.yaml
Langkah 3: Lakukan inferensi
Jalankan perintah curl untuk mengirim permintaan inferensi ke layanan LLM yang disebarkan pada langkah sebelumnya.
MODEL_NAME="peft-demo"
ASM_GW_IP="Alamat IP gateway ingress"
curl -X POST -k http://${ASM_GW_IP}:8008/v2/models/${MODEL_NAME}/infer -d @./input.jsoninput.json dalam perintah curl menunjukkan data permintaan:
{
"inputs": [
{
"name": "content",
"shape": [1],
"datatype": "BYTES",
"contents": {"bytes_contents": ["RXZlcnkgZGF5IGlzIGEgbmV3IGJpbm5pbmcsIGZpbGxlZCB3aXRoIG9wdGlvbnBpZW5pbmcgYW5kIGhvcGU="]}
}
]
}
Nilai dari bytes_contents adalah konten yang dienkripsi Base64 dari string "Every day is a new beginning, filled with opportunities and hope".
Blok kode berikut menunjukkan respons JSON:
{
"modelName": "peft-demo__isvc-5c5315c302",
"outputs": [
{
"name": "output-0",
"datatype": "BYTES",
"shape": [
"1",
"1"
],
"parameters": {
"content_type": {
"stringParam": "str"
}
},
"contents": {
"bytesContents": [
"VHdlZXQgdGV4dCA6IEV2ZXJ5IGRheSBpcyBhIG5ldyBiaW5uaW5nLCBmaWxsZWQgd2l0aCBvcHRpb25waWVuaW5nIGFuZCBob3BlIExhYmVsIDogbm8gY29tcGxhaW50"
]
}
}
]
}Blok kode berikut menunjukkan konten yang didekode Base64 dari bytesContents. Ini menunjukkan bahwa permintaan inferensi dilakukan pada layanan LLM sesuai harapan.
Tweet text : Every day is a new binning, filled with optionpiening and hope Label : no complaint