إطار معالجة تعليمات سهل الاستخدام لنماذج اللغات الكبيرة.
المشروع • الورق • العرض التوضيحي • نظرة عامة • التثبيت • البدء السريع • كيفية الاستخدام • المستندات • الفيديو • الاستشهاد • المساهمون
هذا المستودع هو مشروع فرعي لـ KnowLM.
EasyInstruct عبارة عن حزمة Python تم اقتراحها كإطار عمل سهل الاستخدام لمعالجة التعليمات لنماذج اللغات الكبيرة (LLMs) مثل GPT-4 وLLaMA وChatGLM في تجاربك البحثية. يقوم EasyInstruct بإنشاء التعليمات واختيارها وطرحها، مع الأخذ في الاعتبار أيضًا دمجها وتفاعلها.
تقنيات توليد التعليمات المدعومة الحالية هي كما يلي:
طُرق | وصف |
---|---|
تعليمات ذاتية | الطريقة التي تأخذ عينات عشوائية من بعض التعليمات من مجموعة المهام الأولية المشروحة بواسطة الإنسان كعروض توضيحية وتطالب ماجستير إدارة الأعمال بإنشاء المزيد من التعليمات وأزواج المدخلات والمخرجات المقابلة. |
تطور التعليمات | الطريقة التي تقوم بترقية مجموعة أولية من التعليمات بشكل تدريجي إلى تعليمات أكثر تعقيدًا عن طريق مطالبة LLM بمطالبات محددة. |
الترجمة العكسية | الطريقة التي تنشئ تعليمات بعد مثيل التدريب من خلال التنبؤ بالتعليمات التي سيتم الرد عليها بشكل صحيح من خلال جزء من مستند المجموعة. |
KG2Instruct | الطريقة التي تنشئ تعليمات بعد مثيل التدريب من خلال التنبؤ بالتعليمات التي سيتم الرد عليها بشكل صحيح من خلال جزء من مستند المجموعة. |
مقاييس اختيار التعليمات المدعومة الحالية هي كما يلي:
المقاييس | التدوين | وصف |
---|---|---|
طول | الطول المحدد لكل زوج من التعليمات والاستجابة. | |
الحيرة | المتوسط الأسي للسجل السلبي لاحتمالية الاستجابة. | |
MTLD | مقياس التنوع المعجمي النصي، وهو متوسط طول الكلمات المتسلسلة في النص الذي يحافظ على الحد الأدنى من درجة TTR. | |
روج | دراسة موجهة نحو الاستدعاء لتقييم الإحصاء، وهي مجموعة من المقاييس المستخدمة لتقييم أوجه التشابه بين الجمل. | |
نقاط GPT | درجة ما إذا كان الإخراج مثالًا جيدًا لكيفية استجابة AI Assistant لتعليمات المستخدم، المقدمة من ChatGPT. | |
CIRS | يتم تسجيل النتيجة باستخدام شجرة بناء الجملة المجردة لتشفير السمات الهيكلية والمنطقية، لقياس الارتباط بين الكود وقدرات التفكير. |
مقدمو خدمات واجهة برمجة التطبيقات (API) ومنتجات LLM المقابلة لهم المتوفرة حاليًا:
نموذج | وصف | الإصدار الافتراضي |
---|---|---|
OpenAI | ||
جي بي تي-3.5 | مجموعة من النماذج التي تعمل على تحسين GPT-3 ويمكنها فهم اللغة الطبيعية أو التعليمات البرمجية وإنشاءها. | gpt-3.5-turbo |
جي بي تي-4 | مجموعة من النماذج التي تعمل على تحسين GPT-3.5 ويمكنها فهم اللغة الطبيعية أو التعليمات البرمجية وإنشاءها. | gpt-4 |
أنثروبي | ||
كلود | مساعد الذكاء الاصطناعي من الجيل التالي استنادًا إلى أبحاث Anthropic في تدريب أنظمة الذكاء الاصطناعي المفيدة والصادقة وغير الضارة. | claude-2.0 |
كلود فوري | خيار أخف وأقل تكلفة وأسرع بكثير من كلود. | claude-instant-1.2 |
التحم | ||
يأمر | تم تدريب نموذج إنشاء النص الرائد من Cohere على اتباع أوامر المستخدم ويكون مفيدًا على الفور في تطبيقات الأعمال العملية. | 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 بسرعة. يمكنك إما استخدام برنامج Shell النصي أو تطبيق 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
نستضيف أيضًا تطبيقًا قيد التشغيل في 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
هو فئة طريقة إنشاء التعليمات الخاصة بالترجمة العكسية للتعليمات. راجع المحاذاة الذاتية مع الترجمة العكسية للتعليمات لمزيد من التفاصيل.
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
هو الفصل الخاص بإزالة عينات التعليمات المكررة التي يمكن أن تؤثر سلبًا على كل من استقرار ما قبل التدريب وأداء LLMs. يمكنDeduplicator
أيضًا أن تتيح الاستخدام الفعال لمساحة التخزين وتحسينها.
LengthSelector
هي فئة اختيار عينات التعليمات بناءً على طول التعليمات. يمكن أن تؤثر التعليمات الطويلة جدًا أو القصيرة جدًا على جودة البيانات ولا تساعد على ضبط التعليمات.
RougeSelector
هو فئة اختيار عينات التعليمات بناءً على مقياس ROUGE الذي غالبًا ما يستخدم لتقييم جودة الإنشاء الآلي للنص.
GPTScoreSelector
هي فئة اختيار عينات التعليمات بناءً على درجة GPT، والتي تعكس ما إذا كانت المخرجات مثالًا جيدًا لكيفية استجابة AI Assistant لتعليمات المستخدم، المقدمة من ChatGPT.
PPLSelector
هي فئة اختيار عينات التعليمات بناءً على درجة الحيرة، وهو متوسط احتمالية السجل السلبي للاستجابة.
MTLDSelector
هو الفصل الدراسي لاختيار عينات التعليمات بناءً على MTLD، وهو اختصار لمقياس التنوع المعجمي النصي.
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
على توحيد خطوة المطالبة بالتعليمات، حيث يتم إنشاء طلبات المستخدم كمطالبات تعليمات وإرسالها إلى ماجستير إدارة أعمال محدد للحصول على استجابات. يمكنك اختيار طريقة المطالبة المناسبة بناءً على احتياجاتك الخاصة.
يرجى مراجعة الرابط لمزيد من التفاصيل.
تعمل وحدة 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 في مشروعنا، حيث استخدمنا أجزاء من كود المصدر الخاص بهم في مشروعنا.