Python Building Blocks เพื่อสำรวจโมเดลภาษาขนาดใหญ่ใน RAM เพียง 512MB

แพ็คเกจนี้ทำให้การใช้แบบจำลองภาษาขนาดใหญ่จาก Python ง่ายที่สุดเท่าที่จะทำได้ การอนุมานทั้งหมดดำเนินการในเครื่องเพื่อให้ข้อมูลของคุณเป็นส่วนตัวโดยค่าเริ่มต้น
แพ็คเกจนี้สามารถติดตั้งได้โดยใช้คำสั่งต่อไปนี้:
pip install languagemodelsเมื่อติดตั้งแล้วคุณควรจะสามารถโต้ตอบกับแพ็คเกจใน Python ได้ดังนี้:
> >> import languagemodels as lm
> >> lm . do ( "What color is the sky?" )
'The color of the sky is blue.'สิ่งนี้จะต้องดาวน์โหลดข้อมูลจำนวนมาก (~ 250MB) ในการเรียกใช้ครั้งแรก โมเดลจะถูกแคชสำหรับการใช้งานในภายหลังและการโทรที่ตามมาควรจะรวดเร็ว
นี่คือตัวอย่างการใช้งานบางส่วนเป็นเซสชัน Python Repl สิ่งนี้ควรใช้งานได้ใน REPL, สมุดบันทึกหรือในสคริปต์และแอปพลิเคชันแบบดั้งเดิม
> >> import languagemodels as lm
> >> lm . do ( "Translate to English: Hola, mundo!" )
'Hello, world!'
> >> lm . do ( "What is the capital of France?" )
'Paris.'เอาต์พุตสามารถ จำกัด อยู่ในรายการตัวเลือกได้หากต้องการ:
> >> lm . do ( "Is Mars larger than Saturn?" , choices = [ "Yes" , "No" ])
'No'โมเดลพื้นฐานควรทำงานอย่างรวดเร็วในระบบใด ๆ ที่มีหน่วยความจำ 512MB แต่ขีด จำกัด ของหน่วยความจำนี้สามารถเพิ่มขึ้นเพื่อเลือกรุ่นที่มีประสิทธิภาพมากขึ้นซึ่งจะใช้ทรัพยากรมากขึ้น นี่คือตัวอย่าง:
> >> import languagemodels as lm
> >> lm . do ( "If I have 7 apples then eat 5, how many apples do I have?" )
'You have 8 apples.'
> >> lm . config [ "max_ram" ] = "4gb"
4.0
> >> lm . do ( "If I have 7 apples then eat 5, how many apples do I have?" )
'I have 2 apples left.'หากคุณมี Nvidia GPU พร้อม CUDA คุณสามารถเลือกใช้ GPU สำหรับการอนุมาน:
> >> import languagemodels as lm
> >> lm . config [ "device" ] = "auto" > >> import languagemodels as lm
> >> lm . complete ( "She hid in her room until" )
'she was sure she was safe'ฟังก์ชั่นผู้ช่วยมีไว้เพื่อดึงข้อความจากแหล่งภายนอกที่สามารถใช้เพื่อเพิ่มบริบทที่รวดเร็ว
> >> import languagemodels as lm
> >> lm . get_wiki ( 'Chemistry' )
' Chemistry is the scientific study ...
>> > lm . get_weather ( 41.8 , - 87.6 )
' Partly cloudy with a chance of rain ...
>> > lm . get_date ()
'Friday, May 12, 2023 at 09:27AM'นี่คือตัวอย่างที่แสดงวิธีการใช้งานนี้ (เปรียบเทียบกับตัวอย่างการแชทก่อนหน้า):
> >> lm . do ( f"It is { lm . get_date () } . What time is it?" )
'The time is 12:53PM.'มีการค้นหาความหมายเพื่อดึงเอกสารที่อาจให้บริบทที่เป็นประโยชน์จากร้านเอกสาร
> >> import languagemodels as lm
> >> lm . store_doc ( lm . get_wiki ( "Python" ), "Python" )
> >> lm . store_doc ( lm . get_wiki ( "C language" ), "C" )
> >> lm . store_doc ( lm . get_wiki ( "Javascript" ), "Javascript" )
> >> lm . get_doc_context ( "What does it mean for batteries to be included in a language?" )
' From Python document : It is often described as a "batteries included" language due to its comprehensive standard library . Guido van Rossum began working on Python in the late 1980 s as a successor to the ABC programming language and first released it in 1991 as Python 0.9 .
From C document : It was designed to be compiled to provide low - level access to memory and language constructs that map efficiently to machine instructions , all with minimal runtime support .'เอกสารฉบับเต็ม
แพ็คเกจนี้มีประสิทธิภาพสูงกว่าการกอด transformers สำหรับการอนุมาน CPU ด้วยการหาปริมาณ Int8 และแบ็กเอนด์ CTRANSLATE2 ตารางต่อไปนี้เปรียบเทียบประสิทธิภาพการอนุมานของ CPU กับโมเดลที่เหมือนกันโดยใช้การหาปริมาณที่ดีที่สุดในชุดทดสอบคำถาม 20 ชุด
| แบ็กเอนด์ | เวลาอนุมาน | หน่วยความจำที่ใช้ |
|---|---|---|
| กอด Transformers | 22s | 1.77GB |
| แพ็คเกจนี้ | 11s | 0.34GB |
โปรดทราบว่า Quantization จะทำร้ายคุณภาพเอาต์พุตทางเทคนิคเล็กน้อย แต่ควรเล็กน้อยในระดับนี้
มีการจัดเตรียมโมเดลเริ่มต้นที่เหมาะสม แพ็คเกจควรปรับปรุงเมื่อเวลาผ่านไปเมื่อมีรุ่นที่แข็งแกร่งขึ้น รุ่นพื้นฐานที่ใช้มีขนาดเล็กกว่ารุ่นที่ใหญ่ที่สุด 1,000 เท่าในปัจจุบัน พวกเขามีประโยชน์เป็นเครื่องมือการเรียนรู้ แต่ดำเนินการต่ำกว่าสถานะปัจจุบันของศิลปะ
นี่คือรุ่นเริ่มต้นปัจจุบันที่ใช้โดยแพ็คเกจสำหรับค่า max_ram ที่ให้มา:
| max_ram | ชื่อนางแบบ | พารามิเตอร์ (B) |
|---|---|---|
| 0.5 | Lamini-Flan-T5-248m | 0.248 |
| 1.0 | Lamini-Flan-T5-783m | 0.783 |
| 2.0 | Lamini-Flan-T5-783m | 0.783 |
| 4.0 | Flan-Alpaca-GPT4-XL | 3.0 |
| 8.0 | OpenChat-3.5-0106 | 7.0 |
สำหรับการสมบูรณ์ของรหัสจะใช้ Codet5+ series ของโมเดล
แพ็คเกจนี้ได้รับใบอนุญาตสำหรับการใช้งานเชิงพาณิชย์ แต่รุ่นที่ใช้อาจไม่เข้ากันได้กับการใช้งานเชิงพาณิชย์ ในการใช้แพ็คเกจนี้ในเชิงพาณิชย์คุณสามารถกรองโมเดลตามประเภทใบอนุญาตโดยใช้ฟังก์ชัน require_model_license
> >> import languagemodels as lm
> >> lm . config [ 'instruct_model' ]
'LaMini-Flan-T5-248M-ct2-int8'
> >> lm . require_model_license ( "apache|bsd|mit" )
> >> lm . config [ 'instruct_model' ]
'flan-t5-base-ct2-int8'ขอแนะนำให้ยืนยันว่าโมเดลที่ใช้เป็นไปตามข้อกำหนดการออกใบอนุญาตสำหรับซอฟต์แวร์ของคุณ
หนึ่งในเป้าหมายสำหรับแพ็คเกจนี้คือการเป็นเครื่องมือที่ตรงไปตรงมาสำหรับผู้เรียนและนักการศึกษาสำรวจว่าแบบจำลองภาษาขนาดใหญ่ตัดกับการพัฒนาซอฟต์แวร์ที่ทันสมัยอย่างไร มันสามารถใช้ในการยกหนักสำหรับโครงการเรียนรู้จำนวนมาก:
โปรแกรมตัวอย่างและสมุดบันทึกหลายรายการรวมอยู่ในไดเรกทอรี examples