08. HuggingFace Pipeline
HuggingFace Pipeline
HuggingFace Local Pipelines
class HuggingFacePipeline memungkinkan Anda menjalankan model Hugging Face secara lokal.
Hugging Face Model Hub menampung lebih dari 120.000 model, 20.000 set data, dan 50.000 aplikasi demo (Spaces) di platform online, yang semuanya bersifat open source dan tersedia untuk umum, sehingga memudahkan orang untuk berkolaborasi dan membangun ML bersama-sama.
Model-model ini dapat digunakan di LangChain dengan memanggilnya melalui pembungkus pipeline lokal ini, atau dengan memanggil titik akhir inferensi yang dihosting melalui kelas HuggingFaceHub. Untuk informasi lebih lanjut tentang pipa yang dihosting, lihat buku catatan HuggingFaceHub.
Untuk menggunakannya, Anda harus memiliki paket Python transformer yang diinstal dengan PyTorch
Anda juga dapat menginstal xformer untuk implementasi perhatian yang lebih hemat memori.
%pip install --upgrade --quiet transformers --quietMengatur path untuk mengunduh model
# path untuk mengunduh model HuggingFace/talkizer
import os
# atur untuk mengunduh ke jalur ./cache/
os.environ["TRANSFORMERS_CACHE"] = "./cache/"
os.environ["HF_HOME"] = "./cache/"Model loading
Model dapat dimuat dengan menentukan parameter model menggunakan metode from_model_id.
Gunakan class
HuggingFacePipelineuntuk memuat model wajah berpelukan yang telah dilatih sebelumnya.Gunakan metode
from_model_iduntuk menentukan modelbeomi/llama-2-en-7b, dan atur aksi ke “text-generation”.Gunakan parameter
pipeline_kwargsuntuk membatasi jumlah maksimum token yang akan dihasilkan hingga 10.Model yang dimuat ditetapkan ke variabel
hf, yang memungkinkan Anda untuk melakukan tugas pembuatan teks.
Model yang digunakan: https://huggingface.co/beomi/llama-2-ko-7b
Anda juga dapat melewatkan pipeline transformer yang sudah ada secara langsung untuk memuatnya.
Menerapkan model pembuatan teks menggunakan HuggingFacePipeline.
Muat model
beomi/llama-2-en-7bdan tokeniser menggunakanAutoTokeniserdanAutoModelForCausalLM.Buat
pipeline“text-generation” menggunakan fungsi pipeline, dan siapkan model dan tokeniser. Batasi jumlah maksimum token yang dihasilkan hingga 10.Buat objek hf menggunakan kelas
HuggingFacePipeline, dan berikan pipeline yang dihasilkan.
Anda dapat menggunakan objek hf yang dihasilkan ini untuk melakukan pembuatan teks untuk prompt yang diberikan.
Membuat Chain
Setelah model dimuat ke dalam memori, model tersebut dapat dikonfigurasikan dengan prompt untuk membentuk rantai.
Gunakan class
PromptTemplateuntuk membuat template prompt yang mendefinisikan format pertanyaan dan jawaban.Pipeline objek
promptdan objekhfuntuk membuat objekchain.Panggil metode
chain.invoke()untuk membuat dan mencetak jawaban dari pertanyaan yang diberikan.
Inferensi GPU
Ketika menjalankan pada GPU, Anda dapat menentukan parameter device=n untuk menempatkan model pada perangkat tertentu.
Nilai defaultnya adalah -1, yang melakukan inferensi pada CPU.
Jika Anda memiliki beberapa GPU atau model Anda terlalu besar untuk satu GPU, Anda dapat menentukan device_map=“auto”.
Dalam kasus ini, library Accelerate diperlukan dan akan digunakan untuk secara otomatis menentukan cara memuat bobot model.
Perhatian: device dan device_map tidak boleh ditentukan secara bersamaan, karena hal ini dapat menyebabkan perilaku yang tidak diharapkan.
Muat model
gpt2menggunakanHuggingFacePipeline, atur parameterdeviceke 0 agar dapat berjalan pada GPU.Gunakan parameter
pipeline_kwargsuntuk membatasi jumlah maksimum token yang akan dihasilkan menjadi 10.Buat
gpu_chaindengan pipeliningpromptdangpu_llm.Panggil metode
gpu_chain.invoke()untuk menghasilkan dan menampilkan jawaban dari pertanyaan yang diberikan.
Batch GPU Inference
Jika dijalankan pada perangkat GPU, Anda dapat menjalankan inferensi pada GPU dalam mode batch.
Menggunakan
HuggingFacePipeline, Anda bisa memuat modelbeomi/llama-2-ko-7bdan mengatur agar dijalankan di GPU.Saat membuat
gpu_llm, aturbatch_sizemenjadi 2,temperaturemenjadi 0, danmax_lengthmenjadi 64.Hubungkan
promptdangpu_llmmelalui sebuah pipeline untuk membuatgpu_chain, lalu atur token penutup menjadi "\n\n".Gunakan
gpu_chain.batch()untuk menghasilkan jawaban secara paralel untuk pertanyaan-pertanyaan dalamquestions.Cetak jawaban yang dihasilkan melalui loop.
Last updated