Hauptmerkmale | Neueste Updates | Vision | Schnellstart | Referenzdokumente | Lizenz
EasyDeL ist ein Open-Source-Framework, das den Trainingsprozess von Modellen für maschinelles Lernen verbessern und rationalisieren soll, wobei der Schwerpunkt auf Jax/Flax liegt. Es bietet praktische und effektive Lösungen für das Training und die Bereitstellung von Flax/Jax-Modellen auf TPU/GPU im großen Maßstab.
EasyDeL zeichnet sich durch beispiellose Flexibilität und Transparenz aus:
Offene Architektur : Jede einzelne Komponente von EasyDeL kann überprüft, geändert und angepasst werden. Hier gibt es keine Black Boxes.
Hackbarkeit im Kern : Wir glauben daran, Ihnen die volle Kontrolle zu geben. Egal, ob Sie eine kleine Funktion optimieren oder eine Trainingsschleife komplett überarbeiten möchten, mit EasyDeL können Sie es tun.
Zugriff auf benutzerdefinierten Code : Alle benutzerdefinierten Implementierungen sind sofort verfügbar und gut dokumentiert, sodass Sie die Interna nach Bedarf verstehen, daraus lernen und ändern können.
Ermutigen Sie zum Experimentieren : Wir ermutigen Benutzer aktiv, mit der vorhandenen Codebasis zu experimentieren, sie zu erweitern und zu verbessern. Ihre Innovationen könnten das nächste große Feature werden!
Community-gesteuerte Entwicklung : Teilen Sie Ihre benutzerdefinierten Implementierungen und Verbesserungen mit der Community und fördern Sie so eine kollaborative Umgebung zur Förderung der ML-Forschung und -Entwicklung.
Mit EasyDeL sind Sie nicht an starre Rahmenbedingungen gebunden. Stattdessen verfügen Sie über ein flexibles, leistungsstarkes Toolkit, das sich an Ihre Anforderungen anpasst, egal wie einzigartig oder spezialisiert sie auch sein mögen. Unabhängig davon, ob Sie Spitzenforschung betreiben oder produktionsreife ML-Systeme entwickeln, bietet EasyDeL die Freiheit, ohne Einschränkungen Innovationen voranzutreiben.
EasyDeL bietet beispiellose Flexibilität bei der Anpassung und Optimierung Ihrer Modelle:
Sharding-Strategien : Passen Sie einfach verschiedene Sharding-Strategien an und experimentieren Sie damit, um die Leistung auf mehreren Geräten zu optimieren.
Algorithmenanpassung : Ändern und optimieren Sie Algorithmen entsprechend Ihren spezifischen Anforderungen und Hardwarekonfigurationen.
Aufmerksamkeitsmechanismen : Wählen Sie aus über 10 Arten von Aufmerksamkeitsmechanismen, die für GPU/TPU/CPU optimiert sind, darunter:
Dieser Grad der Anpassung ermöglicht es Ihnen, die Leistung Ihrer Hardware bis ins kleinste Detail auszuschöpfen und gleichzeitig das Verhalten des Modells genau an Ihre Anforderungen anzupassen.
EasyDeL entwickelt sich ständig weiter, um den Anforderungen der Machine-Learning-Community gerecht zu werden. In kommenden Updates planen wir die Einführung von:
Flexibilität : EasyDeL bietet ein modulares Design, das es Forschern und Entwicklern ermöglicht, Komponenten einfach zu kombinieren, mit verschiedenen Architekturen (einschließlich Transformers, Mamba, RWKV usw.) zu experimentieren und Modelle an bestimmte Anwendungsfälle anzupassen.
Leistung : EasyDeL nutzt die Leistungsfähigkeit von JAX und Flax und bietet leistungsstarke Implementierungen modernster Modelle und Trainingstechniken, die sowohl für TPUs als auch für GPUs optimiert sind.
Skalierbarkeit : Von kleinen Experimenten bis hin zu groß angelegten Modellschulungen bietet EasyDeL Tools und Optimierungen, um Ihre Modelle und Arbeitsabläufe effizient zu skalieren.
Benutzerfreundlichkeit : Trotz seiner leistungsstarken Funktionen verfügt EasyDeL über eine intuitive API, die es sowohl für Anfänger als auch für erfahrene Praktiker zugänglich macht.
Spitzenforschung : Schnelle Umsetzung der neuesten Fortschritte bei Modellarchitekturen, Trainingstechniken und Optimierungsmethoden.
pip install easydel
import easydel as ed
ed . FlexibleAttentionModule . run_attention_benchmarks ()
Eine umfassende Dokumentation und Beispiele finden Sie unter EasyDeL Documentation.
Hier ist eine verbesserte Version Ihrer neuesten Updates:
jax_flash_attn2
wurde hinzugefügt und die Standardaufmerksamkeit ist jetzt auf jax_flash_attn2
in CPU/GPU/TPU eingestellt.inference
8bit_cache
hinzugefügtDPO
als auch ORPO
-Trainer wurden verbessert. params = model . shard_params ( params )
params = model . gather_params ( params )
do_shard_params
wurde aus TrainingArguments
entfernt. Um Parameter zu teilen, müssen Sie dies jetzt vor dem Training manuell tun.ApiEngine
und engine_client
hinzugefügtSFT
, DPO
, ORPO
und CLM
Trainer Die vInference
Klasse bietet eine optimierte Schnittstelle für die Textgenerierung mithilfe vorab trainierter Sprachmodelle in 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
ist eine Serve-API-Engine für Produktions- oder Forschungszwecke und bietet eine stabile, effiziente und OpenAI-API-ähnliche API.
import easydel as ed
api_inference = ed . vInferenceApiServer (
{ inference . inference_name : inference }
) # you can load multi inferences together
api_inference . fire ()
EasyDeLState
fungiert als umfassender Container für Ihr EasyDeL-Modell, einschließlich Trainingsfortschritt, Modellparameter und Optimiererinformationen.
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 ()
Beiträge zu EasyDeL sind willkommen! Bitte teilen Sie das Repository auf, nehmen Sie Ihre Änderungen vor und senden Sie eine Pull-Anfrage.
EasyDeL wird unter der Apache v2-Lizenz veröffentlicht. Weitere Einzelheiten finden Sie in der LICENSE-Datei.
Wenn Sie Fragen oder Kommentare zu EasyDeL haben, können Sie mich unter [email protected] kontaktieren.
Um EasyDeL in Ihrer Arbeit zu zitieren:
@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 }
}