กรอบการประมวลผลคำสั่งที่ใช้งานง่ายสำหรับโมเดลภาษาขนาดใหญ่
โครงการ • กระดาษ • การสาธิต • ภาพรวม • การติดตั้ง • การเริ่มต้นอย่างรวดเร็ว • วิธีการใช้งาน • เอกสาร • วีดีโอ • การอ้างอิง • ผู้ร่วมให้ข้อมูล
พื้นที่เก็บข้อมูลนี้เป็นโครงการย่อยของ KnowLM
EasyInstruct เป็นแพ็คเกจ Python ที่ได้รับการเสนอให้เป็นเฟรมเวิร์กการประมวลผลคำสั่งที่ใช้งานง่ายสำหรับโมเดลภาษาขนาดใหญ่ (LLM) เช่น GPT-4, LLaMA, ChatGLM ในการทดลองวิจัยของคุณ EasyInstruct ทำให้การสร้าง การเลือก และการแจ้งคำสั่งเป็นโมดูล ขณะเดียวกันก็พิจารณาการผสมผสานและการโต้ตอบของคำสั่งเหล่านั้นด้วย
เทคนิคการสร้างคำสั่งที่รองรับในปัจจุบันมีดังนี้:
วิธีการ | คำอธิบาย |
---|---|
การสอนด้วยตนเอง | วิธีการสุ่มตัวอย่างคำสั่งบางส่วนจากกลุ่มงานเริ่มต้นที่มีคำอธิบายประกอบโดยมนุษย์เป็นการสาธิต และแจ้งให้ LLM สร้างคำสั่งเพิ่มเติมและคู่อินพุต-เอาต์พุตที่สอดคล้องกัน |
Evol-สอน | วิธีการที่ค่อยๆ อัปเกรดชุดคำสั่งเริ่มแรกให้เป็นคำสั่งที่ซับซ้อนมากขึ้นโดยแจ้ง LLM ด้วยพร้อมท์เฉพาะ |
การแปลกลับ | วิธีการที่สร้างคำสั่งตามตัวอย่างการฝึกอบรมโดยการทำนายคำสั่งที่จะถูกตอบอย่างถูกต้องโดยส่วนหนึ่งของเอกสารของคลังข้อมูล |
KG2 คำสั่ง | วิธีการที่สร้างคำสั่งตามตัวอย่างการฝึกอบรมโดยการทำนายคำสั่งที่จะถูกตอบอย่างถูกต้องโดยส่วนหนึ่งของเอกสารของคลังข้อมูล |
เมตริกการเลือกคำสั่งที่รองรับในปัจจุบันมีดังนี้:
เมตริก | สัญกรณ์ | คำอธิบาย |
---|---|---|
ความยาว | ความยาวที่จำกัดของคำสั่งและการตอบกลับทุกคู่ | |
ความฉงนสนเท่ห์ | ค่าบันทึกความน่าจะเป็นของการตอบสนองเป็นลบโดยเฉลี่ยแบบยกกำลัง | |
MTLD | การวัดความหลากหลายของคำศัพท์ที่เป็นข้อความ ความยาวเฉลี่ยของคำที่เรียงตามลำดับในข้อความที่รักษาคะแนน TTR ตามเกณฑ์ขั้นต่ำ | |
สีแดง | Recall-Oriented Understudy สำหรับการประเมิน Gisting ซึ่งเป็นชุดเมตริกที่ใช้สำหรับประเมินความคล้ายคลึงกันระหว่างประโยค | |
คะแนนจีพีที | คะแนนว่าผลลัพธ์เป็นตัวอย่างที่ดีว่าผู้ช่วย AI ควรตอบสนองต่อคำสั่งของผู้ใช้อย่างไร ซึ่งจัดทำโดย ChatGPT | |
ซีอาร์เอส | คะแนนที่ใช้แผนผังไวยากรณ์นามธรรมเพื่อเข้ารหัสคุณลักษณะเชิงโครงสร้างและตรรกะ เพื่อวัดความสัมพันธ์ระหว่างโค้ดและความสามารถในการให้เหตุผล |
ผู้ให้บริการ API และผลิตภัณฑ์ LLM ที่เกี่ยวข้องซึ่งมีให้บริการในปัจจุบัน:
แบบอย่าง | คำอธิบาย | เวอร์ชันเริ่มต้น |
---|---|---|
OpenAI | ||
GPT-3.5 | ชุดรูปแบบที่ปรับปรุงบน GPT-3 และสามารถเข้าใจรวมถึงสร้างภาษาหรือโค้ดที่เป็นธรรมชาติ | gpt-3.5-turbo |
GPT-4 | ชุดรูปแบบที่ปรับปรุงบน GPT-3.5 และสามารถเข้าใจรวมถึงสร้างภาษาหรือโค้ดที่เป็นธรรมชาติ | gpt-4 |
มานุษยวิทยา | ||
คลอดด์ | ผู้ช่วย AI รุ่นต่อไปที่อิงจากการวิจัยของ Anthropic ในการฝึกอบรมระบบ AI ที่เป็นประโยชน์ ซื่อสัตย์ และไม่เป็นอันตราย | claude-2.0 |
Claude-ทันที | ตัวเลือกที่เบากว่า ราคาถูกกว่า และเร็วกว่า Claude มาก | claude-instant-1.2 |
เชื่อมโยงกัน | ||
สั่งการ | โมเดลการสร้างข้อความระดับเรือธงของ Cohere ที่ได้รับการฝึกอบรมให้ปฏิบัติตามคำสั่งของผู้ใช้ และมีประโยชน์ทันทีในแอปพลิเคชันทางธุรกิจเชิงปฏิบัติ | command |
คำสั่ง-Light | โมเดล Command เวอร์ชันเบาที่เร็วกว่าแต่อาจสร้างข้อความที่สร้างขึ้นคุณภาพต่ำ | command-light |
การติดตั้งจากสาขา git repo:
pip install git+https://github.com/zjunlp/EasyInstruct@main
การติดตั้งเพื่อการพัฒนาท้องถิ่น:
git clone https://github.com/zjunlp/EasyInstruct
cd EasyInstruct
pip install -e .
การติดตั้งโดยใช้ PyPI (ไม่ใช่เวอร์ชันล่าสุด):
pip install easyinstruct -i https://pypi.org/simple
เรามีสองวิธีสำหรับผู้ใช้ในการเริ่มต้นใช้งาน EasyInstruct อย่างรวดเร็ว คุณสามารถใช้เชลล์สคริปต์หรือแอป Gradio ได้ตามความต้องการเฉพาะของคุณ
ผู้ใช้สามารถกำหนดค่าพารามิเตอร์ของ EasyInstruct ในไฟล์สไตล์ YAML ได้อย่างง่ายดาย หรือใช้พารามิเตอร์เริ่มต้นในไฟล์การกำหนดค่าที่เราจัดเตรียมไว้ให้ได้อย่างรวดเร็ว ต่อไปนี้เป็นตัวอย่างไฟล์การกำหนดค่าสำหรับ Self-Instruct:
generator :
SelfInstructGenerator :
target_dir : data/generations/
data_format : alpaca
seed_tasks_path : data/seed_tasks.jsonl
generated_instructions_path : generated_instructions.jsonl
generated_instances_path : generated_instances.jsonl
num_instructions_to_generate : 100
engine : gpt-3.5-turbo
num_prompt_instructions : 8
สามารถดูไฟล์การกำหนดค่าตัวอย่างเพิ่มเติมได้ที่ configs
ผู้ใช้ควรระบุไฟล์การกำหนดค่าและระบุคีย์ OpenAI API ของตนเองก่อน จากนั้น รันเชลล์สคริปต์ต่อไปนี้เพื่อเรียกใช้การสร้างคำสั่งหรือกระบวนการเลือก
config_file= " "
openai_api_key= " "
python demo/run.py
--config $config_file
--openai_api_key $openai_api_key
เรามีแอป Gradio สำหรับผู้ใช้เพื่อเริ่มต้นใช้งาน EasyInstruct อย่างรวดเร็ว คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อเปิดแอป Gradio ภายในเครื่องที่พอร์ต 8080
(ถ้ามี)
python demo/app.py
นอกจากนี้เรายังโฮสต์แอป gradio ที่ทำงานอยู่ใน HuggingFace Spaces คุณสามารถลองได้ที่นี่
โปรดดูเอกสารของเราสำหรับรายละเอียดเพิ่มเติม
โมดูล Generators
เพิ่มความคล่องตัวให้กับกระบวนการสร้างข้อมูลคำสั่ง ทำให้สามารถสร้างข้อมูลคำสั่งตามข้อมูลเริ่มต้นได้ คุณสามารถเลือกเครื่องกำเนิดไฟฟ้าที่เหมาะสมได้ตามความต้องการเฉพาะของคุณ
BaseGenerator
เป็นคลาสพื้นฐานสำหรับตัวสร้างทั้งหมด
คุณยังสามารถสืบทอดคลาสพื้นฐานนี้ได้อย่างง่ายดายเพื่อปรับแต่งคลาสตัวสร้างของคุณเอง เพียงแทนที่
__init__
และgenerate
วิธีการ
SelfInstructGenerator
เป็นคลาสสำหรับวิธีการสร้างคำสั่ง Self-Instruct ดูการสอนด้วยตนเอง: การจัดรูปแบบภาษาให้สอดคล้องกับคำแนะนำที่สร้างขึ้นเองสำหรับรายละเอียดเพิ่มเติม
ตัวอย่าง
from easyinstruct import SelfInstructGenerator
from easyinstruct . utils . api import set_openai_key
# Step1: Set your own API-KEY
set_openai_key ( "YOUR-KEY" )
# Step2: Declare a generator class
generator = SelfInstructGenerator ( num_instructions_to_generate = 10 )
# Step3: Generate self-instruct data
generator . generate ()
BacktranslationGenerator
เป็นคลาสสำหรับวิธีสร้างคำสั่งของ Instruction Backtranslation ดูการจัดตำแหน่งตนเองด้วยคำแนะนำ Backtranslation สำหรับรายละเอียดเพิ่มเติม
from easyinstruct import BacktranslationGenerator
from easyinstruct . utils . api import set_openai_key
# Step1: Set your own API-KEY
set_openai_key ( "YOUR-KEY" )
# Step2: Declare a generator class
generator = BacktranslationGenerator ( num_instructions_to_generate = 10 )
# Step3: Generate backtranslation data
generator . generate ()
EvolInstructGenerator
เป็นคลาสสำหรับวิธีสร้างคำสั่งของ EvolInstruct ดู WizardLM: การเพิ่มศักยภาพให้กับโมเดลภาษาขนาดใหญ่เพื่อปฏิบัติตามคำแนะนำที่ซับซ้อน สำหรับรายละเอียดเพิ่มเติม
from easyinstruct import EvolInstructGenerator
from easyinstruct . utils . api import set_openai_key
# Step1: Set your own API-KEY
set_openai_key ( "YOUR-KEY" )
# Step2: Declare a generator class
generator = EvolInstructGenerator ( num_instructions_to_generate = 10 )
# Step3: Generate evolution data
generator . generate ()
KG2InstructGenerator
เป็นคลาสสำหรับวิธีสร้างคำสั่งของ KG2Instruct ดู InstructIE: ชุดข้อมูลการแยกข้อมูลตามคำสั่งภาษาจีนสำหรับรายละเอียดเพิ่มเติม
โมดูล Selectors
สร้างมาตรฐานให้กับกระบวนการเลือกคำสั่ง ทำให้สามารถแยกชุดข้อมูลคำสั่งคุณภาพสูงออกจากข้อมูลคำสั่งดิบที่ยังไม่ได้ประมวลผล ข้อมูลดิบสามารถมาจากชุดข้อมูลคำสั่งที่เปิดเผยต่อสาธารณะหรือสร้างโดยเฟรมเวิร์กเอง คุณสามารถเลือกตัวเลือกที่เหมาะสมได้ตามความต้องการเฉพาะของคุณ
BaseSelector
เป็นคลาสพื้นฐานสำหรับตัวเลือกทั้งหมด
คุณยังสามารถสืบทอดคลาสพื้นฐานนี้ได้อย่างง่ายดายเพื่อปรับแต่งคลาสตัวเลือกของคุณเอง เพียงแทนที่
__init__
และ__process__
วิธีการ
Deduplicator
เป็นคลาสสำหรับกำจัดตัวอย่างคำสั่งที่ซ้ำกันซึ่งอาจส่งผลเสียต่อทั้งความเสถียรก่อนการฝึกอบรมและประสิทธิภาพของ LLMDeduplicator
ยังช่วยให้ใช้งานและเพิ่มประสิทธิภาพพื้นที่จัดเก็บข้อมูลได้อย่างมีประสิทธิภาพอีกด้วย
LengthSelector
เป็นคลาสสำหรับเลือกตัวอย่างคำสั่งตามความยาวของคำสั่ง คำสั่งที่ยาวหรือสั้นเกินไปอาจส่งผลต่อคุณภาพของข้อมูลและไม่เอื้อต่อการปรับคำสั่ง
RougeSelector
เป็นคลาสสำหรับการเลือกตัวอย่างคำสั่งตามเมตริก ROUGE ซึ่งมักใช้สำหรับการประเมินคุณภาพของการสร้างข้อความอัตโนมัติ
GPTScoreSelector
เป็นคลาสสำหรับเลือกตัวอย่างคำสั่งตามคะแนน GPT ซึ่งสะท้อนให้เห็นว่าผลลัพธ์เป็นตัวอย่างที่ดีว่า AI Assistant ควรตอบสนองต่อคำสั่งของผู้ใช้ที่ ChatGPT มอบให้หรือไม่
PPLSelector
เป็นคลาสสำหรับการเลือกตัวอย่างคำสั่งตามความฉงนสนเท่ห์ ซึ่งเป็นบันทึกความน่าจะเป็นของการตอบสนองเชิงลบโดยเฉลี่ยแบบยกกำลัง
MTLDSelector
เป็นคลาสสำหรับการเลือกตัวอย่างคำสั่งตาม MTLD ซึ่งย่อมาจาก Measure of Textual Lexical Diversity
CodeSelector
เป็นคลาสสำหรับการเลือกตัวอย่างคำสั่งโค้ดโดยอิงตามคะแนนการให้เหตุผลที่กระทบต่อความซับซ้อน (CIRS) ซึ่งรวมคุณลักษณะทางโครงสร้างและตรรกะเข้าด้วยกัน เพื่อวัดความสัมพันธ์ระหว่างโค้ดและความสามารถในการให้เหตุผล ดูเมื่อใดที่โปรแกรมแห่งความคิดทำงานเพื่อการให้เหตุผล สำหรับรายละเอียดเพิ่มเติม
from easyinstruct import CodeSelector
# Step1: Specify your source file of code instructions
src_file = "data/code_example.json"
# Step2: Declare a code selecter class
selector = CodeSelector (
source_file_path = src_file ,
target_dir = "data/selections/" ,
manually_partion_data = True ,
min_boundary = 0.125 ,
max_boundary = 0.5 ,
automatically_partion_data = True ,
k_means_cluster_number = 2 ,
)
# Step3: Process the code instructions
selector . process ()
MultiSelector
เป็นคลาสสำหรับการรวมตัวเลือกที่เหมาะสมหลายตัวเข้าด้วยกันตามความต้องการเฉพาะของคุณ
โมดูล Prompts
สร้างมาตรฐานให้กับขั้นตอนการแจ้งคำสั่ง โดยที่คำขอของผู้ใช้จะถูกสร้างขึ้นเป็นพร้อมท์คำสั่ง และส่งไปยัง LLM เฉพาะเพื่อรับการตอบกลับ คุณสามารถเลือกวิธีการแจ้งที่เหมาะสมได้ตามความต้องการเฉพาะของคุณ
โปรดตรวจสอบลิงก์เพื่อดูรายละเอียดเพิ่มเติม
โมดูล Engines
สร้างมาตรฐานให้กับกระบวนการดำเนินการคำสั่ง ทำให้สามารถดำเนินการพร้อมท์คำสั่งบน LLM ที่ปรับใช้ในเครื่องเฉพาะได้ คุณสามารถเลือกเครื่องยนต์ที่เหมาะสมได้ตามความต้องการเฉพาะของคุณ
โปรดตรวจสอบลิงก์เพื่อดูรายละเอียดเพิ่มเติม
โปรดอ้างอิงพื้นที่เก็บข้อมูลของเราหากคุณใช้ EasyInstruct ในงานของคุณ
@article { ou2024easyinstruct ,
title = { EasyInstruct: An Easy-to-use Instruction Processing Framework for Large Language Models } ,
author = { Ou, Yixin and Zhang, Ningyu and Gui, Honghao and Xu, Ziwen and Qiao, Shuofei and Bi, Zhen and Chen, Huajun } ,
journal = { arXiv preprint arXiv:2402.03049 } ,
year = { 2024 }
}
@misc { knowlm ,
author = { Ningyu Zhang and Jintian Zhang and Xiaohan Wang and Honghao Gui and Kangwei Liu and Yinuo Jiang and Xiang Chen and Shengyu Mao and Shuofei Qiao and Yuqi Zhu and Zhen Bi and Jing Chen and Xiaozhuan Liang and Yixin Ou and Runnan Fang and Zekun Xi and Xin Xu and Lei Li and Peng Wang and Mengru Wang and Yunzhi Yao and Bozhong Tian and Yin Fang and Guozhou Zheng and Huajun Chen } ,
title = { KnowLM: An Open-sourced Knowledgeable Large Langugae Model Framework } ,
year = { 2023 } ,
url = { http://knowlm.zjukg.cn/ } ,
}
@article { bi2023program ,
title = { When do program-of-thoughts work for reasoning? } ,
author = { Bi, Zhen and Zhang, Ningyu and Jiang, Yinuo and Deng, Shumin and Zheng, Guozhou and Chen, Huajun } ,
journal = { arXiv preprint arXiv:2308.15452 } ,
year = { 2023 }
}
เราจะเสนอการบำรุงรักษาระยะยาวเพื่อแก้ไขข้อบกพร่อง แก้ไขปัญหา และตอบสนองคำขอใหม่ ดังนั้นหากคุณมีปัญหาใด ๆ โปรดแจ้งปัญหาให้เราทราบ
โครงการอื่นๆ ที่เกี่ยวข้อง
- เราขอขอบคุณอย่างจริงใจสำหรับการสนับสนุน Self-Instruct ให้กับโครงการของเรา เนื่องจากเราได้ใช้ซอร์สโค้ดบางส่วนในโครงการของเรา