Fitur Utama | Pembaruan Terkini | Visi | Mulai Cepat | Dokumen referensi | Lisensi
EasyDeL adalah kerangka kerja sumber terbuka yang dirancang untuk meningkatkan dan menyederhanakan proses pelatihan model pembelajaran mesin, dengan fokus utama pada Jax/Flax. Ini memberikan solusi yang nyaman dan efektif untuk melatih dan menyajikan model Flax/Jax pada TPU/GPU dalam skala besar.
EasyDeL menonjol dengan memberikan fleksibilitas dan transparansi yang tak tertandingi:
Arsitektur Terbuka : Setiap komponen EasyDeL terbuka untuk inspeksi, modifikasi, dan penyesuaian. Tidak ada kotak hitam di sini.
Inti dari Kemampuan Peretasan : Kami percaya memberi Anda kendali penuh. Baik Anda ingin mengubah fungsi kecil atau merombak total loop pelatihan, EasyDeL memungkinkan Anda melakukannya.
Akses Kode Kustom : Semua implementasi kustom sudah tersedia dan terdokumentasi dengan baik, memungkinkan Anda memahami, belajar, dan memodifikasi internal sesuai kebutuhan.
Mendorong Eksperimen : Kami secara aktif mendorong pengguna untuk bereksperimen, memperluas, dan meningkatkan basis kode yang ada. Inovasi Anda bisa menjadi fitur besar berikutnya!
Pengembangan Berbasis Komunitas : Bagikan penerapan dan peningkatan khusus Anda kepada komunitas, membina lingkungan kolaboratif untuk memajukan penelitian dan pengembangan ML.
Dengan EasyDeL, Anda tidak dibatasi oleh kerangka kerja yang kaku. Sebaliknya, Anda memiliki perangkat yang fleksibel dan kuat yang menyesuaikan dengan kebutuhan Anda, tidak peduli betapa unik atau terspesialisasinya perangkat tersebut. Baik Anda melakukan penelitian mutakhir atau membangun sistem ML siap produksi, EasyDeL memberikan kebebasan untuk berinovasi tanpa batasan.
EasyDeL memberikan fleksibilitas yang tak tertandingi dalam menyesuaikan dan mengoptimalkan model Anda:
Strategi Sharding : Sesuaikan dan bereksperimen dengan mudah dengan berbagai strategi sharding untuk mengoptimalkan kinerja di beberapa perangkat.
Kustomisasi Algoritma : Memodifikasi dan menyempurnakan algoritme agar sesuai dengan kebutuhan spesifik dan konfigurasi perangkat keras Anda.
Mekanisme Perhatian : Pilih dari lebih dari 10 jenis mekanisme perhatian yang dioptimalkan untuk GPU/TPU/CPU, termasuk:
Tingkat penyesuaian ini memungkinkan Anda memaksimalkan kinerja perangkat keras sambil menyesuaikan perilaku model dengan kebutuhan Anda.
EasyDeL terus berkembang untuk memenuhi kebutuhan komunitas pembelajaran mesin. Dalam pembaruan mendatang, kami berencana untuk memperkenalkan:
Fleksibilitas : EasyDeL menawarkan desain modular yang memungkinkan peneliti dan pengembang dengan mudah memadupadankan komponen, bereksperimen dengan arsitektur berbeda (termasuk Transformers, Mamba, RWKV, dan ...), dan mengadaptasi model untuk kasus penggunaan tertentu.
Performa : Memanfaatkan kekuatan JAX dan Flax, EasyDeL menyediakan implementasi performa tinggi dari model dan teknik pelatihan tercanggih, yang dioptimalkan untuk TPU dan GPU.
Skalabilitas : Dari eksperimen kecil hingga pelatihan model skala besar, EasyDeL menyediakan alat dan pengoptimalan untuk menskalakan model dan alur kerja Anda secara efisien.
Kemudahan Penggunaan : Terlepas dari fitur-fiturnya yang canggih, EasyDeL mempertahankan API yang intuitif, sehingga dapat diakses oleh pemula dan praktisi berpengalaman.
Riset Mutakhir : dengan cepat menerapkan kemajuan terkini dalam arsitektur model, teknik pelatihan, dan metode pengoptimalan.
pip install easydel
import easydel as ed
ed . FlexibleAttentionModule . run_attention_benchmarks ()
Dokumentasi dan contoh yang komprehensif tersedia di Dokumentasi EasyDeL.
Berikut adalah versi perbaikan dari pembaruan terkini Anda:
jax_flash_attn2
ditambahkan dan Perhatian default sekarang disetel ke jax_flash_attn2
di CPU/GPU/TPU.inference
8bit_cache
DPO
dan ORPO
telah ditingkatkan. params = model . shard_params ( params )
params = model . gather_params ( params )
do_shard_params
telah dihapus dari TrainingArguments
. Untuk melakukan sharding parameter, Anda sekarang harus melakukannya secara manual sebelum pelatihan.ApiEngine
dan engine_client
SFT
, DPO
, ORPO
, CLM
Kelas vInference
menyediakan antarmuka yang disederhanakan untuk pembuatan teks menggunakan model bahasa terlatih dalam JAX.
import easydel as ed
from transformers import AutoTokenizer
model , params = ed . AutoEasyDeLModelForCausalLM . from_pretrained (...)
tokenizer = AutoTokenizer . from_pretrained (...)
inference = ed . vInference (
model = model ,
params = params ,
tokenizer = tokenizer ,
generation_config = ed . vInferenceConfig (
temperature = model . generation_config . temperature ,
top_k = model . generation_config . top_k ,
top_p = model . generation_config . top_p ,
bos_token_id = model . generation_config . bos_token_id ,
eos_token_id = model . generation_config . eos_token_id ,
pad_token_id = model . generation_config . pad_token_id ,
streaming_chunks = 32 ,
max_new_tokens = 1024 ,
),
)
vInferenceApiServer
adalah Mesin API Penyajian untuk tujuan produksi atau penelitian, menyediakan API seperti API OpenAI yang stabil, efisien, dan.
import easydel as ed
api_inference = ed . vInferenceApiServer (
{ inference . inference_name : inference }
) # you can load multi inferences together
api_inference . fire ()
EasyDeLState
bertindak sebagai wadah komprehensif untuk model EasyDeL Anda, termasuk kemajuan pelatihan, parameter model, dan informasi pengoptimal.
from easydel import EasyDeLState
state = EasyDeLState . from_pretrained (
pretrained_model_name_or_path = "model_name" ,
dtype = jnp . bfloat16 ,
param_dtype = jnp . bfloat16 ,
sharding_axis_dims = ( 1 , - 1 , 1 , 1 )
)
from easydel import SFTTrainer , TrainingArguments
trainer = SFTTrainer (
arguments = train_arguments ,
train_dataset = train_dataset ,
eval_dataset = eval_dataset ,
tokenizer = tokenizer ,
formatting_func = prompter ,
packing = True ,
num_of_sequences = max_length ,
)
output = trainer . train ( flax . core . FrozenDict ({ "params" : params }))
from easydel import DPOTrainer
dpo_trainer = DPOTrainer (
model_state = state ,
ref_model_state = ref_state ,
beta = 0.1 ,
train_dataset = train_dataset ,
eval_dataset = eval_dataset ,
tokenizer = tokenizer ,
arguments = arguments ,
max_length = max_length ,
max_completion_length = max_completion_length ,
max_prompt_length = max_prompt_length ,
)
output = dpo_trainer . train ()
Kontribusi pada EasyDeL dipersilakan! Silakan fork repositori, buat perubahan, dan kirimkan permintaan penarikan.
EasyDeL dirilis di bawah lisensi Apache v2. Lihat file LISENSI untuk lebih jelasnya.
Jika Anda memiliki pertanyaan atau komentar tentang EasyDeL, Anda dapat menghubungi saya di [email protected] .
Mengutip EasyDeL dalam karya Anda:
@misc { Zare Chavoshi_2023,
title = { EasyDeL: An open-source library for enhancing and streamlining the training process of machine learning models } ,
url = { https://github.com/erfanzar/EasyDeL } ,
author = { Zare Chavoshi, Erfan } ,
year = { 2023 }
}