Jalankan Llama, Phi, Gemma, Mistral dengan ONNX Runtime.
API ini memberi Anda cara yang mudah, fleksibel, dan berkinerja dalam menjalankan LLM di perangkat.
Ini mengimplementasikan loop AI generatif untuk model ONNX, termasuk pemrosesan sebelum dan sesudah, inferensi dengan ONNX Runtime, pemrosesan logit, pencarian dan pengambilan sampel, dan manajemen cache KV.
Anda dapat memanggil metode generate()
tingkat tinggi untuk menghasilkan semua output sekaligus, atau mengalirkan output satu token dalam satu waktu.
Lihat dokumentasi di https://onnxruntime.ai/docs/genai.
Matriks dukungan | Didukung sekarang | Sedang dikembangkan | Di peta jalan |
---|---|---|---|
Arsitektur model | permata lama * Mistral + Phi (bahasa + penglihatan) Qwen Nemotron | Berbisik | Difusi yang stabil |
API | ular piton C# C/C++ Jawa ^ | Tujuan-C | |
Platform | Linux jendela Mac ^ Android^ | iOS | |
Arsitektur | x86 x64 Lengan64 ~ | ||
Akselerasi Perangkat Keras | CUDA ML Langsung | QNN BukaVINO ROCM | |
Fitur | Penguraian kode interaktif Kustomisasi (penyempurnaan) | Penguraian kode spekulatif |
* Arsitektur model Llama mendukung keluarga model serupa seperti CodeLlama, Vicuna, Yi, dan banyak lagi.
+ Arsitektur model Mistral mendukung rangkaian model serupa seperti Zephyr.
^ Memerlukan pembangunan dari sumber
~ Windows build tersedia, memerlukan build dari sumber untuk platform lain
Lihat https://onnxruntime.ai/docs/genai/howto/install
Unduh modelnya
unduh huggingface-cli microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir .
Instal APInya
pip instal numpy instalasi pip --pra onnxruntime-genai
Jalankan modelnya
impor onnxruntime_genai sebagai ogmodel = og.Model('cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4')tokenizer = og.Tokenizer(model)tokenizer_stream = tokenizer.create_stream() # Atur panjang maksimum ke sesuatu yang masuk akal secara default,# karena jika tidak maka akan diatur ke seluruh konteks lengthsearch_options = {}search_options['max_length'] = 2048chat_template = '<|user|>n{input} <|end|> n<|asisten|>'text = input("Input: ")jika bukan teks: print("Error, input tidak boleh kosong") exitprompt = f'{chat_template.format(input=teks)}'input_tokens = tokenizer.encode(prompt)params = og.GeneratorParams(model)params.set_search_options(**search_options)params.input_ids = input_tokensgenerator = og.Generator(model, params )print("Keluaran: ", end='', flush=True)coba: selagi tidak generator.is_done(): generator.compute_logits() generator.generate_next_token() new_token = generator.get_next_tokens()[0] print(tokenizer_stream.decode(new_token), end='', flush=True)kecuali KeyboardInterrupt: print(" --control+c ditekan, membatalkan pembuatan--")print()del generator
Lihat Diskusi untuk meminta fitur baru dan memberi suara positif pada permintaan yang ada.
Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda berhak, dan memang benar, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi https://cla.opensource.microsoft.com.
Saat Anda mengirimkan permintaan tarik, bot CLA akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghiasi PR dengan tepat (misalnya, pemeriksaan status, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di seluruh repo menggunakan CLA kami.
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi lebih lanjut lihat FAQ Pedoman Perilaku atau hubungi [email protected] jika ada pertanyaan atau komentar tambahan.
Proyek ini mungkin berisi merek dagang atau logo untuk proyek, produk, atau layanan. Penggunaan resmi atas merek dagang atau logo Microsoft tunduk dan harus mengikuti Pedoman Merek Dagang & Merek Microsoft. Penggunaan merek dagang atau logo Microsoft dalam versi modifikasi proyek ini tidak boleh menimbulkan kebingungan atau menyiratkan sponsor Microsoft. Segala penggunaan merek dagang atau logo pihak ketiga tunduk pada kebijakan pihak ketiga tersebut.