รัน Llama, Phi, Gemma, Mistral ด้วยรันไทม์ ONNX
API นี้ช่วยให้คุณเรียกใช้ LLM บนอุปกรณ์ได้อย่างง่ายดาย ยืดหยุ่น และมีประสิทธิภาพ
ใช้ generative AI loop สำหรับโมเดล ONNX รวมถึงการประมวลผลก่อนและหลัง การอนุมานด้วยรันไทม์ ONNX การประมวลผลบันทึก การค้นหาและการสุ่มตัวอย่าง และการจัดการแคช KV
คุณสามารถเรียกใช้เมธอด generate()
ระดับสูงเพื่อสร้างเอาต์พุตทั้งหมดในครั้งเดียว หรือสตรีมเอาต์พุตทีละโทเค็น
ดูเอกสารประกอบได้ที่https://onnxruntime.ai/docs/genai
เมทริกซ์สนับสนุน | รองรับแล้ว | อยู่ระหว่างการพัฒนา | บนแผนงาน |
---|---|---|---|
สถาปัตยกรรมแบบจำลอง | เจมม่า ลามะ * มิสทรัล+ พี่ (ภาษา + การมองเห็น) เกว็น นีโมตรอน | กระซิบ | การแพร่กระจายที่เสถียร |
เอพีไอ | หลาม ค# ซี/ซี++ จาวา ^ | วัตถุประสงค์-C | |
แพลตฟอร์ม | ลินุกซ์ หน้าต่าง แม็ก ^ แอนดรอยด์ ^ | ไอโอเอส | |
สถาปัตยกรรม | x86 x64 อาร์ม64~ | ||
การเร่งความเร็วด้วยฮาร์ดแวร์ | CUDA ไดเร็กต์เอ็มแอล | คิวเอ็นเอ็น OpenVINO ร็อคม | |
คุณสมบัติ | การถอดรหัสแบบโต้ตอบ การปรับแต่ง (การปรับแต่ง) | การถอดรหัสเก็งกำไร |
* สถาปัตยกรรมโมเดล Llama รองรับตระกูลโมเดลที่คล้ายกัน เช่น CodeLlama, Vicuna, Yi และอื่นๆ
+ สถาปัตยกรรมโมเดล Mistral รองรับตระกูลโมเดลที่คล้ายกัน เช่น Zephyr
↑ ต้องสร้างจากแหล่งที่มา
~ Windows builds พร้อมใช้งาน ต้องมี build จากซอร์สสำหรับแพลตฟอร์มอื่น
ดู https://onnxruntime.ai/docs/genai/howto/install
ดาวน์โหลดโมเดล
Huggingface-cli ดาวน์โหลด microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir
ติดตั้ง API
pip ติดตั้งจำนวนมาก pip ติดตั้ง --pre onnxruntime-genai
เรียกใช้โมเดล
นำเข้า onnxruntime_genai เป็น ogmodel = og.Model('cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4')tokenizer = og.Tokenizer(model)tokenizer_stream = tokenizer.create_stream() # ตั้งค่าความยาวสูงสุดเป็นสิ่งที่สมเหตุสมผลเป็นค่าเริ่มต้น# เนื่องจากมิฉะนั้นจะถูกตั้งค่าเป็นบริบททั้งหมด lengthsearch_options = {}search_options['max_length'] = 2048chat_template = '<|user|>n{input} <|end|> n<|assistant|>'text = input("Input: ")ถ้าไม่ใช่ข้อความ: print("ข้อผิดพลาด อินพุตไม่สามารถเว้นว่างได้") exitprompt = f'{chat_template.format(input=text)}'input_tokens = tokenizer.encode(prompt)params = og.GeneratorParams(model)params.set_search_options(**search_options)params.input_ids = input_tokensgenerator = og.Generator(โมเดล, พารามิเตอร์ )print("Output: ", end='', flush=True)ลอง: while ไม่ใช่ 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) ยกเว้น KeyboardInterrupt: print( " --control+c กดแล้ว ยกเลิกการสร้าง--")print()del Generator
ดูการสนทนาเพื่อขอคุณสมบัติใหม่และโหวตคำขอที่มีอยู่
โครงการนี้ยินดีรับการสนับสนุนและข้อเสนอแนะ การบริจาคส่วนใหญ่กำหนดให้คุณยอมรับข้อตกลงใบอนุญาตผู้ร่วมให้ข้อมูล (CLA) โดยประกาศว่าคุณมีสิทธิ์ที่จะให้สิทธิ์แก่เราในการใช้การบริจาคของคุณจริงๆ สำหรับรายละเอียด โปรดไปที่ https://cla.opensource.microsoft.com
เมื่อคุณส่งคำขอดึง บอท CLA จะกำหนดโดยอัตโนมัติว่าคุณจำเป็นต้องจัดเตรียม CLA และตกแต่ง PR อย่างเหมาะสมหรือไม่ (เช่น การตรวจสอบสถานะ ความคิดเห็น) เพียงทำตามคำแนะนำที่ได้รับจากบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวกับ repos ทั้งหมดโดยใช้ CLA ของเรา
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม
โครงการนี้อาจมีเครื่องหมายการค้าหรือโลโก้สำหรับโครงการ ผลิตภัณฑ์ หรือบริการ การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft โดยได้รับอนุญาตจะอยู่ภายใต้และต้องปฏิบัติตามแนวทางเครื่องหมายการค้าและแบรนด์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ในเวอร์ชันแก้ไขของโครงการนี้จะต้องไม่ทำให้เกิดความสับสนหรือบ่งบอกถึงการสนับสนุนของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของบุคคลที่สามจะต้องเป็นไปตามนโยบายของบุคคลที่สามเหล่านั้น