Open-ChatGPT
adalah pustaka sumber terbuka yang memungkinkan Anda melatih model ai mirip ChatGPT yang sangat dipersonalisasi menggunakan data Anda sendiri dan jumlah komputasi sesedikit mungkin.
Open-ChatGPT
adalah kerangka sistem umum untuk memungkinkan pengalaman pelatihan menyeluruh untuk model mirip ChatGPT. Ini dapat secara otomatis mengambil model bahasa besar favorit Anda yang telah dilatih sebelumnya melalui tiga tahap gaya OpenAI InstructGPT untuk menghasilkan model gaya ChatGPT Anda sendiri yang berkualitas tinggi.
Kami telah menerapkan RLHF (Pembelajaran Penguatan dengan Umpan Balik Manusia) yang didukung oleh perpustakaan transformator dan DeepsSpeed. Ini mendukung pelatihan dan pembongkaran terdistribusi, yang dapat memuat model yang sangat besar.
Jika Anda menyukai proyek ini, tunjukkan dukungan Anda dengan meninggalkan bintang.
[2023/05] Kami menerapkan Stanford Alpaca Lora .
[2023/05] Kami menerapkan Stanford Alpaca .
[2023/04] Kami merilis Pipeline RLHF (Pembelajaran Penguatan dengan Umpan Balik Manusia) .
[2023/03] Kami merilis kode OpenChatGPT: Perpustakaan Sumber Terbuka untuk melatih ChatBot seperti ChatGPT .
Open-ChatGPT: Implementasi sumber terbuka dari ChatGPT
Memori Tidak Cukup
Menyempurnakan Alpaca-7B
Menggunakan DeepSpeed
Menyempurnakan Alpaca-7B dengan Lora
Kumpulan Data Instruksi
Kumpulan Data RLHF
Pemrosesan Awal Data
Pemformatan Data
Perkenalan
Berita
Daftar isi
Pengumpulan Data
Memasang
Instruksi Fintune
Kesimpulan
Berkontribusi
Lisensi
Ucapan Terima Kasih
Kutipan
Kumpulan kumpulan data penyetelan instruksi sumber terbuka untuk melatih LLM berbasis obrolan (teks dan multimodal) (GPT-4, ChatGPT,LLaMA,Alpaca).
Mengacu pada (@jianzhnie), kami memberi label pada setiap kumpulan data yang dikumpulkan sesuai dengan aturan berikut:
(Bahasa)Tag Bahasa:
EN: Kumpulan data instruksi dalam bahasa Inggris
CN: Kumpulan data instruksi dalam bahasa Mandarin
ML: [Multibahasa] Kumpulan data instruksi dalam berbagai bahasa
(Tugas)Tag Tugas:
MT: [Multi-task] Kumpulan data yang berisi banyak tugas
TS: [Khusus tugas] Kumpulan data yang disesuaikan untuk tugas tertentu
(Gen)Metode generasi:
HG: [Kumpulan Data Buatan Manusia] Kumpulan data yang dibuat oleh manusia
SI: [Instruksi Mandiri] Kumpulan data yang dihasilkan menggunakan metode instruksi mandiri
CAMPURAN: [Kumpulan Data Campuran] Kumpulan data berisi data yang dihasilkan manusia dan mesin
COL : [Kumpulan Dataset] Dataset dibuat dari kumpulan dataset lain
Proyek | Kumpulan data | Organisasi | Angka | Lang | Tugas | Jenderal | Jenis | Src |
---|---|---|---|---|---|---|---|---|
Rantai Pemikiran | cot_data |few_shot_data | 74771 | EN/CN | MT | HG | instruksikan dengan alasan ranjang bayi | membubuhi keterangan CoT pada data yang ada | |
GPT4semua | nomic-ai/gpt4all-j-prompt-generasi | nomik-ai | 806199 | EN | MT | kol | kode, cerita dan dialog | distilasi dari GPT-3.5-turbo |
Guru GP | Instruksi Umum GPT-4 |Instruksi-Peranan |Instruksi-Kode | Pembentuk alat | teknium1 | 29013 | EN | MT | SI | umum, permainan peran, pembuat alat | GPT-4 & pembentuk alat |
guanaco | JosephusCheung/GuanacoDataset | Josephus Cheung | 534610 | ml | MT | SI | berbagai tugas linguistik | teks-davinci-003 |
HC3 | Halo-SimpleAI/HC3 | Halo-SimpleAI | 万得资讯 | 37175 | EN/CN | TS | MENCAMPUR | evaluasi dialog | manusia atau ChatGPT |
HC3-Cina | Halo-SimpleAI/HC3-Cina | Halo-SimpleAI|万得资讯 | 13k | CN | TS | MENCAMPUR | evaluasi dialog | manusia atau ChatGPT |
alpaka | tatsu-lab/alpaca | laboratorium tatsu | 52002 | EN | MT | SI | instruksi umum | teks-davinci-003 |
AlpacaDataDibersihkan | dibersihkan yahma/alpaca | yahma | 52k | EN | MT | SI | instruksi umum | teks-davinci-003 |
Cina-LLaMA-Alpaca | alpaca_data_zh_51k | ymcui(讯飞) | 51k | CN | MT | SI | instruksi umum | teks-davinci-003 |
Luotuo-Cina-LLM 骆驼 | trans_chinese_alpaca_data | LC1332(商汤) | 52k | CN | MT | SI | instruksi umum | teks-davinci-003 |
Petunjuk Alami | Tugas Allen AI 61|tugas 1,5k | Allen AI | 5040134 | ml | MT | kol | beragam tugas nlp | pengumpulan kumpulan data beranotasi manusia |
primadona_cn | BelleGroup/train_1M_CN |BelleGroup/train_0.5M_CN | Grup Belle(链家) | 1079517 | CN | TS/MT | SI | umum, penalaran matematis, dialog |
Di sini, kami hanya mencantumkan sebagian kecil dari daftar kumpulan data penyetelan instruksi, untuk menemukan kumpulan data lainnya, silakan periksa tautan berikut: jianzhnie/awesome-instruction-datasets: Kumpulan kumpulan data sumber terbuka untuk melatih LLM yang mengikuti instruksi (ChatGPT ,LLaMA,Alpaka).
Kumpulan Data Penyetelan Instruksi / Pembelajaran Penguatan dari Umpan Balik Manusia (RLHF) adalah komponen kunci dari LLM yang mengikuti instruksi seperti ChatGPT. Berikut ini adalah daftar lengkap kumpulan data yang digunakan untuk penyetelan instruksi di berbagai LLM, sehingga memudahkan peneliti dan pengembang untuk mengakses dan memanfaatkan sumber daya ini.
Proyek | Organisasi | Angka | Lang | Ringkasan |
---|---|---|---|---|
webgpt_comparisons | Buka | 19.578 | Bahasa inggris | Dalam makalah WebGPT, penulis melatih model penghargaan dari umpan balik manusia. Mereka menggunakan model penghargaan untuk melatih model menjawab pertanyaan dalam bentuk panjang agar selaras dengan preferensi manusia. Ini adalah kumpulan data dari semua perbandingan yang ditandai sebagai cocok untuk pemodelan penghargaan pada akhir proyek WebGPT. Total ada 19.578 perbandingan. |
kapal | standfordnlp | 349 K | Bahasa inggris | SHP adalah kumpulan data dari 385 ribu preferensi kolektif manusia atas tanggapan terhadap pertanyaan/instruksi di 18 bidang studi yang berbeda, mulai dari memasak hingga nasihat hukum. Preferensi dimaksudkan untuk mencerminkan manfaat suatu respons terhadap respons lainnya, dan dimaksudkan untuk digunakan dalam pelatihan model penghargaan RLHF dan model evaluasi NLG (misalnya, SteamSHP). |
kumpulan data rlhf-reward | yitingxie | 76,3rb | Bahasa inggris | |
Dahoas/penuh-hh-rlhf | Dahoas | 112rb | Bahasa inggris | Kumpulan data HH Anthropic diformat ulang menjadi sampel yang cepat, dipilih, dan ditolak. |
Dahoas/instruksi-sintetis-gptj-berpasangan | Dahoas | Bahasa inggris | ||
Dahoas/rm-statis | Dahoas | 76.3k | Bahasa inggris | Perpecahan hh-statis yang digunakan untuk melatih model penghargaan setelah penyesuaian yang diawasi. |
Antropis/hh-rlhf | Antropis | 22k | Bahasa inggris | Kumpulan data RLHF ini adalah kumpulan data 'online' berulang yang mencakup data dari model bahasa 52B. Ini berisi 22 ribu perbandingan kegunaan dan tidak ada data tim merah. |
Instruksi-Tuning-dengan-GPT-4/GPT-4-LLM | Instruksi-Tuning-dengan-GPT-4 | 52k | Bahasa inggris | Respons yang diberi peringkat (Catatan: Data dievaluasi dengan model GPT-4 BUKAN manusia) dari perintah Alpaca dari tiga model (GPT-4, GPT-3.5, dan OPT-IML) dengan meminta GPT-4 untuk menilai kualitasnya. Penulis yakin "GPT-4 mampu mengidentifikasi dan memperbaiki kesalahannya sendiri, serta menilai kualitas respons secara akurat" |
kamis-coai/Permintaan Keselamatan | kamis-coai | 100k | Cina | petunjuk, petunjuk, dan informasi lainnya. |
Proyek Deteksi Perbandingan Chatgpt |
Untuk menemukan lebih banyak kumpulan data, silakan periksa tautan berikut: jianzhnie/awesome-instruction-datasets: Kumpulan kumpulan data sumber terbuka untuk melatih LLM yang mengikuti instruksi (ChatGPT,LLaMA,Alpaca).
Kami telah mengembangkan kode prapemrosesan data yang menawarkan antarmuka terpadu untuk berbagai model bahasa besar. Kode ini dapat digunakan untuk melakukan praproses data untuk berbagai tujuan, seperti Instruct Tuning dan tugas pemodelan RLHF. Jika Anda tertarik untuk mempelajari lebih lanjut, silakan lihat tautan berikut ke kumpulan data dan utilitas data kami yang cepat:
prompt_dataset.py
data_utils.py
Dalam koleksi kami, semua data telah diformat menggunakan template yang sama. Setiap sampel mengikuti struktur berikut:
[ {"instruction": instruction string, "input": input string, # (may be empty) "output": output string} ]
git clone https://github.com/jianzhnie/open-chatgpt.git instalasi pip -r persyaratan.txt
PEFT
Jika Anda ingin menggunakan LORA bersama dengan metode hemat parameter lainnya, harap instal peft sebagai ketergantungan tambahan.
Kecepatan Dalam
Jika Anda ingin mempercepat pelatihan LLM menggunakan teknik seperti paralelisme pipa, pos pemeriksaan gradien, dan fusi tensor. Silakan instal DeepSpeed.
Kami menyempurnakan model kami menggunakan kode pelatihan Hugging Face standar. Kami menyempurnakan LLaMA-7B dan LLaMA-13B dengan hyperparameter berikut:
Hiperparameter | LLaMA-7B | LLaMA-13B |
---|---|---|
Ukuran kumpulan | 128 | 128 |
Kecepatan pembelajaran | 2e-5 | 1e-5 |
zaman | 3 | 5 |
Panjang maksimal | 512 | 512 |
Penurunan berat badan | 0 | 0 |
Anda dapat menggunakan perintah berikut untuk melatih Alpaca-7B dengan 4 x A100 (40GB).
contoh cd/alpaca/ python kereta_alpaca.py --model_name_or_path 'decapoda-research/llama-7b-hf' --data_path tatsu-lab/alpaca --output_dir pekerjaan_dir/ --num_train_epochs 3 --per_device_train_batch_size 1 --per_device_eval_batch_size 1 --gradien_akumulasi_langkah 16 --evaluation_strategy "tidak" --save_strategy "langkah" --simpan_langkah 2000 --simpan_total_batas 5 --belajar_tingkat 2e-5 --berat_peluruhan 0. --rasio_pemanasan 0,03 --lr_scheduler_type "kosinus" --logging_langkah 1
Jika Anda menemui kesalahan OOM, pertimbangkan ini.
Naifnya, menyempurnakan model 7B memerlukan sekitar 7 x 4 x 4 = 112 GB VRAM. Perintah yang diberikan di atas mengaktifkan sharding parameter, sehingga tidak ada salinan model berlebihan yang disimpan di GPU mana pun. Jika Anda ingin lebih mengurangi jejak memori, berikut beberapa opsi:
Aktifkan CPU offload untuk FSDP dengan --fsdp "full_shard auto_wrap offload"
. Hal ini menghemat VRAM dengan mengorbankan waktu proses yang lebih lama.
Berdasarkan pengalaman kami, DeepSpeed tahap-3 (dengan offload) terkadang lebih hemat memori dibandingkan FSDP dengan offload. Berikut ini contoh penggunaan DeepSpeed tahap-3 dengan 4 GPU dengan parameter dan pengoptimal offload:
pip install contoh deepspeedcd/alpaca/ torchrun --nproc_per_node=8 train_alpaca.py --model_name_or_path 'decapoda-research/llama-7b-hf' --data_path tatsu-lab/alpaca --output_dir pekerjaan_dir/ --num_train_epochs 3 --per_device_train_batch_size 2 --per_device_eval_batch_size 2 --gradien_akumulasi_langkah 8 --evaluation_strategy "tidak" --save_strategy "langkah" --simpan_langkah 2000 --simpan_total_batas 5 --belajar_tingkat 2e-5 --berat_peluruhan 0. --rasio_pemanasan 0,03 --kecepatan dalam "skrip/ds_config_zero3_auto.json"
LoRA menyempurnakan bagian peringkat rendah dari kepala penyematan kueri, kunci, dan nilai. Hal ini dapat mengurangi total jejak memori dari 112 GB menjadi sekitar 7x4=28 GB.
Bagian ini mereproduksi hasil Stanford Alpaca menggunakan adaptasi peringkat rendah (LoRA).
Untuk menyempurnakan dengan murah dan efisien, kami menggunakan PEFT Hugging Face serta bitsandbytes Tim Dettmers.
File ini berisi aplikasi langsung PEFT ke model LLaMA, serta beberapa kode yang terkait dengan konstruksi cepat dan tokenisasi.
python kereta_alpaca_lora.py --model_name_or_path decapoda-research/llama-7b-hf --data_path tatsu-lab/alpaca --output_dir kerja_dir_lora/ --num_train_epochs 3 --per_device_train_batch_size 4 --per_device_eval_batch_size 4 --gradien_akumulasi_langkah 8 --evaluation_strategy "tidak" --save_strategy "langkah" --simpan_langkah 2000 --simpan_total_batas 5 --belajar_tingkat 2e-5 --berat_peluruhan 0. --rasio_pemanasan 0,03 --lr_scheduler_type "kosinus" --logging_langkah 1
File ini membaca model dasar dari hub model Hugging Face dan bobot LoRA dari tloen/alpaca-lora-7b
, dan menjalankan antarmuka Gradio untuk inferensi pada input tertentu. Pengguna harus memperlakukan ini sebagai kode contoh untuk penggunaan model, dan memodifikasinya sesuai kebutuhan.
Contoh penggunaan:
python menghasilkan_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b
Jika Anda tidak memiliki cukup memori, Anda dapat mengaktifkan kompresi 8-bit dengan menambahkan --load-8bit
ke perintah di atas. Hal ini dapat mengurangi penggunaan memori sekitar setengahnya dengan kualitas model yang sedikit menurun. Ini kompatibel dengan CPU, GPU, dan backend Logam. Alpaca-7B dengan kompresi 8-bit dapat berjalan pada satu GPU NVIDIA 3090/4080/T4/V100(16GB).
python menghasilkan_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b --load_8bit
Tujuan kami adalah membuat repo ini menjadi lebih baik. Jika Anda tertarik untuk berkontribusi, silakan lihat DI SINI untuk petunjuk berkontribusi.
Openn-ChatGPT
dirilis di bawah lisensi Apache 2.0.
Kami menghargai kerja keras banyak kontributor sumber terbuka, khususnya:
Alpaka-LoRA
LoRA
Stanford Alpaka
Memeluk Wajah
LLaMa
Vicuna
Harap kutip repo jika Anda menggunakan data atau kode dalam repo ini.
@misc{open-chatgpt, author = {jianzhnie}, title = {Open-ChatGPT, a chatbot based on Llama model}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {url{https://github.com/jianzhnie/open-chatgpt}}, }