Dolly Databricks adalah model bahasa besar yang mengikuti instruksi yang dilatih pada platform pembelajaran mesin Databricks yang dilisensikan untuk penggunaan komersial. Berdasarkan pythia-12b
, Dolly dilatih pada ~15k instruksi/respons penyempurnaan catatan databricks-dolly-15k
yang dihasilkan oleh karyawan Databricks dalam domain kemampuan dari makalah InstructGPT, termasuk brainstorming, klasifikasi, QA tertutup, pembuatan, ekstraksi informasi, QA terbuka dan ringkasan. dolly-v2-12b
bukanlah model yang canggih, namun menunjukkan instruksi berkualitas tinggi yang mengikuti perilaku yang bukan merupakan karakteristik model dasar yang menjadi dasarnya.
Databricks berkomitmen untuk memastikan bahwa setiap organisasi dan individu mendapat manfaat dari kekuatan transformatif kecerdasan buatan. Keluarga model Dolly mewakili langkah pertama kami dalam perjalanan ini, dan kami bersemangat untuk berbagi teknologi ini dengan dunia.
Model ini tersedia di Hugging Face sebagai databricks/dolly-v2-12b.
dolly-v2-12b
adalah model bahasa kausal 12 miliar parameter yang dibuat oleh Databricks yang berasal dari Pythia-12b EleutherAI dan disempurnakan pada korpus instruksi rekaman ~15K yang dihasilkan oleh karyawan Databricks dan dirilis di bawah lisensi permisif (CC-BY- SA)
dolly-v2-12b
bukanlah model bahasa generatif yang canggih dan, meskipun pembandingan kuantitatif sedang berlangsung, dolly-v2-12b tidak dirancang untuk bekerja secara kompetitif dengan arsitektur model yang lebih modern atau model yang tunduk pada korpus pra-pelatihan yang lebih besar.
Keluarga model Dolly sedang dalam pengembangan aktif, sehingga daftar kekurangan apa pun kemungkinan besar tidak akan lengkap, namun kami menyertakan keterbatasan dan kesalahan yang diketahui di sini sebagai sarana untuk mendokumentasikan dan membagikan temuan awal kami kepada komunitas. Secara khusus, dolly-v2-12b
berjuang dengan: perintah yang rumit secara sintaksis, masalah pemrograman, operasi matematika, kesalahan faktual, tanggal dan waktu, menjawab pertanyaan terbuka, halusinasi, menyebutkan daftar dengan panjang tertentu, mimikri gaya, memiliki selera humor , dll. Selain itu, kami menemukan bahwa dolly-v2-12b
tidak memiliki beberapa kemampuan, seperti penulisan surat yang diformat dengan baik, yang ada pada model aslinya.
Seperti semua model bahasa, dolly-v2-12b
mencerminkan konten dan batasan korpus pelatihannya.
The Pile : Korpus pra-pelatihan GPT-J berisi konten yang sebagian besar dikumpulkan dari internet publik, dan seperti kebanyakan kumpulan data skala web, korpus ini berisi konten yang dianggap tidak pantas oleh banyak pengguna. Dengan demikian, model tersebut kemungkinan besar akan mencerminkan kekurangan-kekurangan ini, dan mungkin secara terang-terangan jika model tersebut secara eksplisit diminta untuk menghasilkan konten yang tidak pantas, dan terkadang secara halus, seperti dalam kasus asosiasi implisit yang bias atau berbahaya.
databricks-dolly-15k
: Data pelatihan yang instruksi dolly-v2-12b
disetel mewakili instruksi bahasa alami yang dihasilkan oleh karyawan Databricks selama periode yang mencakup bulan Maret dan April 2023 dan mencakup bagian-bagian dari Wikipedia sebagai bagian referensi untuk kategori instruksi seperti QA tertutup dan ringkasan. Sepengetahuan kami, informasi ini tidak berisi hal-hal yang tidak senonoh, kekayaan intelektual, atau informasi identitas pribadi tentang tokoh non-publik, namun mungkin mengandung kesalahan ketik dan kesalahan faktual. Kumpulan data tersebut mungkin juga mencerminkan bias yang ditemukan di Wikipedia. Terakhir, kumpulan data tersebut kemungkinan besar mencerminkan minat dan pilihan semantik karyawan Databricks, sebuah demografi yang tidak mewakili populasi global secara luas.
Databricks berkomitmen terhadap upaya penelitian dan pengembangan berkelanjutan untuk mengembangkan teknologi AI yang bermanfaat, jujur, dan tidak berbahaya yang memaksimalkan potensi semua individu dan organisasi.
Jika Anda hanya ingin menguji model tanpa pelatihan, model tersebut tersedia di Hugging Face sebagai databricks/dolly-v2-12b.
Untuk menggunakan model dengan pustaka transformers
pada mesin dengan GPU A100:
from transformers import pipeline
import torch
instruct_pipeline = pipeline(model="databricks/dolly-v2-12b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto")
Anda kemudian dapat menggunakan alur untuk menjawab instruksi:
instruct_pipeline("Explain to me the difference between nuclear fission and fusion.")
Jenis instans A100 tidak tersedia di semua wilayah cloud, atau mungkin sulit untuk disediakan. Inferensi dimungkinkan pada jenis instans GPU lainnya.
Model param 6.9B dan 2.8B harus berfungsi apa adanya.
Untuk menghasilkan menggunakan model param 12B pada A10 (misal: g5.4xlarge
, 1 x A10 24GB), perlu memuat dan menjalankan pembangkitan menggunakan bobot 8-bit, yang sedikit memengaruhi hasil:
bitsandbytes
model_kwargs={'load_in_8bit': True}
ke perintah pipeline()
yang ditunjukkan di atas Saat menggunakan V100s (misal: p3.2xlarge
, 1 x V100 16GB, NC6s_v3
), dalam semua kasus, tetapkan torch_dtype=torch.float16
di pipeline()
sebagai gantinya.
Jika tidak, ikuti langkah-langkah di atas. Model param 12B mungkin tidak berfungsi dengan baik dalam 8-bit pada V100s.
dolly
ke Databricks (di bawah Repos klik Tambahkan Repo, masukkan https://github.com/databrickslabs/dolly.git
, lalu klik Buat Repo).13.x ML (includes Apache Spark 3.4.0, GPU, Scala 2.12)
atau klaster node tunggal yang lebih baru dengan tipe node yang memiliki 8 GPU A100 (misalnya Standard_ND96asr_v4
atau p4d.24xlarge
). Perlu diperhatikan bahwa jenis instans ini mungkin tidak tersedia di semua wilayah, atau mungkin sulit untuk disediakan. Di Databricks, perhatikan bahwa Anda harus memilih runtime GPU terlebih dahulu, dan batalkan pilihan "Gunakan Foton", agar tipe instans ini muncul (jika didukung).train_dolly
di Repo (yang merupakan file train_dolly.py
di repo dolly
Github), lampirkan ke cluster GPU Anda, dan jalankan semua sel. Saat pelatihan selesai, notebook akan menyimpan model di bawah /dbfs/dolly_training
.Jenis instans A100 tidak tersedia di semua wilayah cloud, atau mungkin sulit untuk disediakan. Pelatihan dapat dilakukan pada jenis instans GPU lainnya, untuk ukuran model Dolly yang lebih kecil, dan dengan sedikit modifikasi untuk mengurangi penggunaan memori. Modifikasi ini tidak optimal, namun mudah dilakukan.
Pilih jenis keluarga GPU Anda dari widget gpu_family
, masukkan jumlah GPU yang tersedia di widget num_gpus
, lalu jalankan kode selanjutnya. Sejumlah opsi berbeda akan ditetapkan bagi Anda untuk melatih model untuk salah satu jenis GPU berikut:
Detail konfigurasi yang berbeda ada di bawah.
GPU A100 lebih disukai untuk melatih semua ukuran model, dan merupakan satu-satunya GPU yang dapat melatih model param 12B dalam jangka waktu yang wajar. Dengan demikian, ini adalah konfigurasi default, sebagaimana diatur dalam file konfigurasi deepspeed a100_config.json
.
Melatih model param 12B tidak disarankan pada A10.
Untuk melatih model param 6,9B pada instans A10 (misal: g5.24xlarge
, 4 x A10 24GB; Standard_NV72ads_A10_v5
, 2 x A10), cukup pilih a10
dari widget gpu_family
dan masukkan jumlah GPU yang tersedia di widget num_gpus
, lalu jalankan sisa kode. Ini akan menggunakan file konfigurasi deepspeed a10_config.json
, yang membuat perubahan berikut:
per-device-train-batch-size
dan per-device-eval-batch-size
disetel ke 3 dalam pemanggilan train_dolly.py
dari deepspeed
"zero_optimization"
pada konfigurasi deepspeed, kami telah menambahkan: "offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
Untuk berjalan pada instans V100 dengan memori GPU 32 GB (misal: p3dn.24xlarge
atau Standard_ND40rs_v2
), cukup pilih v100
dari widget gpu_family
dan masukkan jumlah GPU yang tersedia di widget num_gpus
, lalu jalankan kode selanjutnya. Ini akan menggunakan file konfigurasi deepspeed v100_config.json
, yang membuat perubahan berikut:
per-device-train-batch-size
per-device-eval-batch-size
menjadi 3Anda mungkin dapat sedikit meningkatkan ukuran batch dengan instans 32 GB, dibandingkan dengan yang berfungsi di atas untuk A10 24 GB.
pyenv local 3.8.13
python -m venv .venv
. .venv/bin/activate
pip install -r requirements_dev.txt
./run_pytest.sh
@online{DatabricksBlog2023DollyV2,
author = {Mike Conover and Matt Hayes and Ankit Mathur and Jianwei Xie and Jun Wan and Sam Shah and Ali Ghodsi and Patrick Wendell and Matei Zaharia and Reynold Xin},
title = {Free Dolly: Introducing the World's First Truly Open Instruction-Tuned LLM},
year = {2023},
url = {https://www.databricks.com/blog/2023/04/12/dolly-first-open-commercially-viable-instruction-tuned-llm},
urldate = {2023-06-30}
}