الميزات الرئيسية | آخر التحديثات | الرؤية | بداية سريعة | المستندات المرجعية | رخصة
EasyDeL هو إطار عمل مفتوح المصدر مصمم لتعزيز وتبسيط عملية التدريب لنماذج التعلم الآلي، مع التركيز بشكل أساسي على Jax/Flax. إنه يوفر حلولاً مريحة وفعالة للتدريب وتقديم نماذج Flax/Jax على TPU/GPU على نطاق واسع.
تتميز EasyDeL بتوفير مرونة وشفافية لا مثيل لهما:
البنية المفتوحة : كل مكون من مكونات EasyDeL مفتوح للفحص والتعديل والتخصيص. لا توجد صناديق سوداء هنا.
القابلية للاختراق في جوهرها : نحن نؤمن بإعطائك السيطرة الكاملة. سواء كنت تريد تعديل وظيفة صغيرة أو إصلاح حلقة تدريب بشكل كامل، فإن EasyDeL يتيح لك القيام بذلك.
الوصول إلى التعليمات البرمجية المخصصة : جميع التطبيقات المخصصة متاحة بسهولة وموثقة جيدًا، مما يسمح لك بفهم العناصر الداخلية والتعلم منها وتعديلها حسب الحاجة.
تشجيع التجريب : نحن نشجع المستخدمين بنشاط على تجربة قاعدة التعليمات البرمجية الحالية وتوسيعها وتحسينها. يمكن أن تصبح ابتكاراتك الميزة الكبيرة التالية!
التطوير القائم على المجتمع : شارك تطبيقاتك وتحسيناتك المخصصة مع المجتمع، مما يعزز بيئة تعاونية لتطوير البحث والتطوير في مجال تعلم الآلة.
مع EasyDeL، لن تكون مقيدًا بأطر عمل جامدة. وبدلاً من ذلك، لديك مجموعة أدوات مرنة وقوية تتكيف مع احتياجاتك، بغض النظر عن مدى تميزها أو تخصصها. سواء كنت تجري أبحاثًا متطورة أو تنشئ أنظمة تعلم الآلة جاهزة للإنتاج، فإن EasyDeL توفر حرية الابتكار دون قيود.
يوفر EasyDeL مرونة لا مثيل لها في تخصيص النماذج وتحسينها:
استراتيجيات المشاركة : يمكنك تخصيص استراتيجيات المشاركة المختلفة وتجربتها بسهولة لتحسين الأداء عبر أجهزة متعددة.
تخصيص الخوارزميات : تعديل الخوارزميات وضبطها لتناسب احتياجاتك الخاصة وتكوينات الأجهزة.
آليات الانتباه : اختر من بين أكثر من 10 أنواع من آليات الانتباه المحسنة لوحدة معالجة الرسومات/TPU/وحدة المعالجة المركزية، بما في ذلك:
يتيح لك هذا المستوى من التخصيص الاستفادة من كل أوقية من الأداء من أجهزتك أثناء تصميم سلوك النموذج وفقًا لمتطلباتك الدقيقة.
تتطور EasyDeL باستمرار لتلبية احتياجات مجتمع التعلم الآلي. في التحديثات القادمة، نخطط لتقديم:
المرونة : يقدم EasyDeL تصميمًا معياريًا يسمح للباحثين والمطورين بخلط المكونات ومطابقتها بسهولة، وتجربة بنيات مختلفة (بما في ذلك Transformers، وMamba، وRWKV، و...)، وتكييف النماذج مع حالات استخدام محددة.
الأداء : من خلال الاستفادة من قوة JAX وFlax، يوفر EasyDeL تطبيقات عالية الأداء لأحدث النماذج وتقنيات التدريب، المُحسّنة لكل من وحدات معالجة الرسومات (TPU) ووحدات معالجة الرسومات.
قابلية التوسع : من التجارب الصغيرة إلى التدريب على النماذج واسعة النطاق، توفر EasyDeL الأدوات والتحسينات لتوسيع نطاق النماذج وسير العمل بكفاءة.
سهولة الاستخدام : على الرغم من ميزاته القوية، يحتفظ EasyDeL بواجهة برمجة تطبيقات بديهية، مما يجعله في متناول المبتدئين والممارسين ذوي الخبرة.
أحدث الأبحاث : التنفيذ السريع لأحدث التطورات في بنيات النماذج، وتقنيات التدريب، وأساليب التحسين.
pip install easydel
import easydel as ed
ed . FlexibleAttentionModule . run_attention_benchmarks ()
تتوفر الوثائق والأمثلة الشاملة على EasyDeL Documentation.
إليك نسخة محسنة من آخر التحديثات:
jax_flash_attn2
وتم الآن تعيين الاهتمام الافتراضي على jax_flash_attn2
في وحدة المعالجة المركزية/وحدة معالجة الرسومات/TPU.inference
8bit_cache
DPO
و ORPO
. params = model . shard_params ( params )
params = model . gather_params ( params )
do_shard_params
من TrainingArguments
. بالنسبة لمعلمات الجزء، يجب عليك الآن القيام بذلك يدويًا قبل التدريب.ApiEngine
و engine_client
SFT
، DPO
، ORPO
، CLM
توفر فئة vInference
واجهة مبسطة لإنشاء النص باستخدام نماذج اللغة المدربة مسبقًا داخل 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
هو محرك واجهة برمجة التطبيقات لأغراض الإنتاج أو البحث، مما يوفر واجهة برمجة تطبيقات مستقرة وفعالة وOpenAI مثل واجهة برمجة التطبيقات.
import easydel as ed
api_inference = ed . vInferenceApiServer (
{ inference . inference_name : inference }
) # you can load multi inferences together
api_inference . fire ()
يعمل EasyDeLState
كحاوية شاملة لنموذج EasyDeL الخاص بك، بما في ذلك تقدم التدريب ومعلمات النموذج ومعلومات المحسن.
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 ()
المساهمات في EasyDeL هي موضع ترحيب! يرجى تفرع المستودع وإجراء التغييرات وإرسال طلب سحب.
تم إصدار EasyDeL بموجب ترخيص Apache v2. راجع ملف الترخيص لمزيد من التفاصيل.
إذا كان لديك أي أسئلة أو تعليقات حول EasyDeL، يمكنك التواصل معي على [email protected] .
للاستشهاد بـ EasyDeL في عملك:
@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 }
}