Kerangka Pemrosesan Instruksi yang Mudah Digunakan untuk Model Bahasa Besar.
Proyek • Makalah • Demo • Ikhtisar • Instalasi • Panduan Memulai • Cara Menggunakan • Dokumen • Video • Kutipan • Kontributor
Repositori ini adalah subproyek KnowLM.
EasyInstruct adalah paket Python yang diusulkan sebagai kerangka pemrosesan instruksi yang mudah digunakan untuk Model Bahasa Besar (LLM) seperti GPT-4, LLaMA, ChatGLM dalam eksperimen penelitian Anda. EasyInstruct memodulasi pembuatan instruksi, pemilihan, dan prompt, sekaligus mempertimbangkan kombinasi dan interaksinya.
Teknik pembuatan instruksi yang didukung saat ini adalah sebagai berikut:
Metode | Keterangan |
---|---|
Instruksikan Sendiri | Metode yang secara acak mengambil sampel beberapa instruksi dari kumpulan tugas awal yang dianotasi manusia sebagai demonstrasi dan mendorong LLM untuk menghasilkan lebih banyak instruksi dan pasangan input-output yang sesuai. |
Evol-Instruksikan | Metode yang secara bertahap meningkatkan serangkaian instruksi awal menjadi instruksi yang lebih kompleks dengan meminta LLM dengan perintah tertentu. |
Terjemahan kembali | Metode yang membuat instruksi mengikuti contoh pelatihan dengan memprediksi instruksi yang akan dijawab dengan benar oleh sebagian dokumen korpus. |
KG2Instruksikan | Metode yang membuat instruksi mengikuti contoh pelatihan dengan memprediksi instruksi yang akan dijawab dengan benar oleh sebagian dokumen korpus. |
Metrik pemilihan instruksi yang didukung saat ini adalah sebagai berikut:
Metrik | Notasi | Keterangan |
---|---|---|
Panjang | Panjang yang dibatasi dari setiap pasangan instruksi dan respons. | |
Kebingungan | Kemungkinan respons log negatif rata-rata yang dieksponen. | |
MTLD | Ukuran keragaman leksikal tekstual, yaitu rata-rata panjang kata berurutan dalam teks yang mempertahankan skor TTR ambang batas minimum. | |
PEMERAH | Pembelajaran Berorientasi Ingatan untuk Evaluasi Gisting, seperangkat metrik yang digunakan untuk mengevaluasi kesamaan antar kalimat. | |
skor GPT | Skor apakah keluarannya merupakan contoh yang baik tentang bagaimana Asisten AI harus merespons instruksi pengguna, disediakan oleh ChatGPT. | |
CIRS | Skor tersebut menggunakan pohon sintaksis abstrak untuk mengkodekan atribut struktural dan logis, untuk mengukur korelasi antara kode dan kemampuan penalaran. |
Penyedia layanan API dan produk LLM terkait yang saat ini tersedia:
Model | Keterangan | Versi Bawaan |
---|---|---|
OpenAI | ||
GPT-3.5 | Seperangkat model yang menyempurnakan GPT-3 dan dapat memahami serta menghasilkan bahasa atau kode alami. | gpt-3.5-turbo |
GPT-4 | Seperangkat model yang menyempurnakan GPT-3.5 dan dapat memahami serta menghasilkan bahasa atau kode alami. | gpt-4 |
Antropis | ||
Claude | Asisten AI generasi berikutnya berdasarkan penelitian Anthropic dalam melatih sistem AI yang bermanfaat, jujur, dan tidak berbahaya. | claude-2.0 |
Claude-Instan | Pilihan yang lebih ringan, lebih murah, dan lebih cepat daripada Claude. | claude-instant-1.2 |
Berpadu | ||
Memerintah | Model pembuatan teks andalan Cohere yang dilatih untuk mengikuti perintah pengguna dan langsung berguna dalam aplikasi bisnis praktis. | command |
Lampu Perintah | Versi ringan model Command yang lebih cepat namun dapat menghasilkan teks dengan kualitas lebih rendah. | command-light |
Instalasi dari cabang git repo:
pip install git+https://github.com/zjunlp/EasyInstruct@main
Instalasi untuk pengembangan lokal:
git clone https://github.com/zjunlp/EasyInstruct
cd EasyInstruct
pip install -e .
Instalasi menggunakan PyPI (bukan versi terbaru):
pip install easyinstruct -i https://pypi.org/simple
Kami menyediakan dua cara bagi pengguna untuk memulai EasyInstruct dengan cepat. Anda dapat menggunakan skrip shell atau aplikasi Gradio berdasarkan kebutuhan spesifik Anda.
Pengguna dapat dengan mudah mengonfigurasi parameter EasyInstruct dalam file bergaya YAML atau dengan cepat menggunakan parameter default di file konfigurasi yang kami sediakan. Berikut adalah contoh file konfigurasi untuk 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
Contoh file konfigurasi lainnya dapat ditemukan di configs.
Pengguna harus terlebih dahulu menentukan file konfigurasi dan memberikan kunci API OpenAI mereka sendiri. Kemudian, jalankan skrip shell berikut untuk meluncurkan proses pembuatan atau pemilihan instruksi.
config_file= " "
openai_api_key= " "
python demo/run.py
--config $config_file
--openai_api_key $openai_api_key
Kami menyediakan aplikasi Gradio bagi pengguna untuk memulai EasyInstruct dengan cepat. Anda dapat menjalankan perintah berikut untuk meluncurkan aplikasi Gradio secara lokal pada port 8080
(jika tersedia).
python demo/app.py
Kami juga menghosting aplikasi gradio yang sedang berjalan di HuggingFace Spaces. Anda dapat mencobanya di sini.
Silakan merujuk ke dokumentasi kami untuk lebih jelasnya.
Modul Generators
menyederhanakan proses pembuatan data instruksi, memungkinkan pembuatan data instruksi berdasarkan data awal. Anda dapat memilih generator yang sesuai berdasarkan kebutuhan spesifik Anda.
BaseGenerator
adalah kelas dasar untuk semua generator.
Anda juga dapat dengan mudah mewarisi kelas dasar ini untuk menyesuaikan kelas generator Anda sendiri. Ganti saja metode
__init__
dangenerate
.
SelfInstructGenerator
adalah kelas untuk metode pembuatan instruksi Self-Instruct. Lihat Instruksi Mandiri: Menyelaraskan Model Bahasa dengan Instruksi yang Dibuat Sendiri untuk lebih jelasnya.
Contoh
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
adalah kelas untuk metode pembuatan instruksi dari Instruksi Backtranslation. Lihat Penyelarasan Diri dengan Terjemahan Balik Instruksi untuk lebih jelasnya.
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
adalah kelas untuk metode pembuatan instruksi EvolInstruct. Lihat WizardLM: Memberdayakan Model Bahasa Besar untuk Mengikuti Instruksi Kompleks untuk detail selengkapnya.
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
adalah kelas untuk metode pembuatan instruksi KG2Instruct. Lihat InstructIE: Kumpulan Data Ekstraksi Informasi Berbasis Instruksi Tiongkok untuk detail selengkapnya.
Modul Selectors
menstandardisasi proses pemilihan instruksi, memungkinkan ekstraksi kumpulan data instruksi berkualitas tinggi dari data instruksi mentah yang belum diproses. Data mentah dapat bersumber dari kumpulan data instruksi yang tersedia untuk umum atau dihasilkan oleh kerangka kerja itu sendiri. Anda dapat memilih pemilih yang sesuai berdasarkan kebutuhan spesifik Anda.
BaseSelector
adalah kelas dasar untuk semua penyeleksi.
Anda juga dapat dengan mudah mewarisi kelas dasar ini untuk menyesuaikan kelas pemilih Anda sendiri. Ganti saja metode
__init__
dan__process__
.
Deduplicator
adalah kelas untuk menghilangkan sampel instruksi duplikat yang dapat berdampak buruk pada stabilitas pra-pelatihan dan kinerja LLM.Deduplicator
juga dapat memungkinkan penggunaan yang efisien dan optimalisasi ruang penyimpanan.
LengthSelector
adalah kelas untuk memilih sampel instruksi berdasarkan panjang instruksi. Instruksi yang terlalu panjang atau terlalu pendek dapat mempengaruhi kualitas data dan tidak kondusif untuk penyetelan instruksi.
RougeSelector
adalah kelas untuk memilih sampel instruksi berdasarkan metrik ROUGE yang sering digunakan untuk mengevaluasi kualitas pembuatan teks otomatis.
GPTScoreSelector
adalah kelas untuk memilih sampel instruksi berdasarkan skor GPT, yang mencerminkan apakah outputnya merupakan contoh yang baik tentang bagaimana Asisten AI harus merespons instruksi pengguna, yang disediakan oleh ChatGPT.
PPLSelector
adalah kelas untuk memilih sampel instruksi berdasarkan kebingungannya, yang merupakan rata-rata eksponensial log kemungkinan respons negatif.
MTLDSelector
adalah kelas untuk memilih sampel instruksi berdasarkan MTLD, yang merupakan kependekan dari Measure of Textual Lexical Diversity.
CodeSelector
adalah kelas untuk memilih sampel instruksi kode berdasarkan Complexity-Impacted Reasoning Score (CIRS), yang menggabungkan atribut struktural dan logis, untuk mengukur korelasi antara kode dan kemampuan penalaran. Lihat Kapan Program Pemikiran Berfungsi untuk Penalaran? untuk lebih jelasnya.
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
adalah kelas untuk menggabungkan beberapa penyeleksi yang sesuai berdasarkan kebutuhan spesifik Anda.
Modul Prompts
menstandardisasi langkah permintaan instruksi, di mana permintaan pengguna dibuat sebagai permintaan instruksi dan dikirim ke LLM tertentu untuk mendapatkan tanggapan. Anda dapat memilih metode dorongan yang sesuai berdasarkan kebutuhan spesifik Anda.
Silakan periksa tautan untuk rincian lebih lanjut.
Modul Engines
menstandardisasi proses eksekusi instruksi, memungkinkan eksekusi perintah instruksi pada LLM tertentu yang diterapkan secara lokal. Anda dapat memilih mesin yang sesuai berdasarkan kebutuhan spesifik Anda.
Silakan periksa tautan untuk rincian lebih lanjut.
Silakan kutip repositori kami jika Anda menggunakan EasyInstruct dalam pekerjaan Anda.
@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 }
}
Kami akan menawarkan pemeliharaan jangka panjang untuk memperbaiki bug, menyelesaikan masalah, dan memenuhi permintaan baru. Jadi jika Anda mempunyai masalah, silakan sampaikan masalahnya kepada kami.
Proyek Terkait Lainnya
? Kami ingin mengucapkan terima kasih yang sebesar-besarnya atas kontribusi Self-Instruct pada proyek kami, karena kami telah menggunakan sebagian dari kode sumber mereka dalam proyek kami.