Ключевые особенности | Последние обновления | Видение | Быстрый старт | Справочная документация | Лицензия
EasyDeL — это платформа с открытым исходным кодом, предназначенная для улучшения и оптимизации процесса обучения моделей машинного обучения с упором на Jax/Flax. Он предоставляет удобные и эффективные решения для обучения и обслуживания моделей Flax/Jax на TPU/GPU в большом масштабе.
EasyDeL отличается беспрецедентной гибкостью и прозрачностью:
Открытая архитектура : каждый компонент EasyDeL открыт для проверки, модификации и настройки. Здесь нет черных ящиков.
Возможность взлома в своей основе : мы верим в то, что вам нужно предоставить полный контроль. Если вы хотите настроить небольшую функцию или полностью пересмотреть цикл обучения, EasyDeL позволит вам это сделать.
Доступ к пользовательскому коду : все пользовательские реализации легко доступны и хорошо документированы, что позволяет вам понимать, учиться и изменять внутренние компоненты по мере необходимости.
Поощряйте экспериментирование . Мы активно поощряем пользователей экспериментировать, расширять и улучшать существующую кодовую базу. Ваши инновации могут стать следующей большой особенностью!
Разработка, управляемая сообществом : делитесь своими индивидуальными реализациями и улучшениями с сообществом, создавая среду сотрудничества для продвижения исследований и разработок в области машинного обучения.
С EasyDeL вы не ограничены жесткими рамками. Вместо этого у вас есть гибкий и мощный набор инструментов, который адаптируется к вашим потребностям, какими бы уникальными или специализированными они ни были. Независимо от того, проводите ли вы передовые исследования или создаете готовые к использованию системы машинного обучения, EasyDeL предоставляет свободу для инноваций без ограничений.
EasyDeL обеспечивает беспрецедентную гибкость в настройке и оптимизации ваших моделей:
Стратегии сегментирования : легко настраивайте и экспериментируйте с различными стратегиями сегментирования для оптимизации производительности на нескольких устройствах.
Настройка алгоритма : изменяйте и настраивайте алгоритмы в соответствии с вашими конкретными потребностями и конфигурациями оборудования.
Механизмы внимания . Выбирайте из более чем 10 типов механизмов внимания, оптимизированных для графического процессора/ТП/ЦП, в том числе:
Этот уровень настройки позволяет вам выжать максимум производительности из вашего оборудования, одновременно адаптируя поведение модели к вашим точным требованиям.
EasyDeL постоянно развивается, чтобы удовлетворить потребности сообщества машинного обучения. В следующих обновлениях мы планируем представить:
Гибкость : EasyDeL предлагает модульную конструкцию, которая позволяет исследователям и разработчикам легко смешивать и сочетать компоненты, экспериментировать с различными архитектурами (включая Transformers, Mamba, RWKV и...) и адаптировать модели к конкретным вариантам использования.
Производительность . Используя возможности JAX и Flax, EasyDeL обеспечивает высокопроизводительную реализацию современных моделей и методов обучения, оптимизированных как для TPU, так и для графических процессоров.
Масштабируемость : от небольших экспериментов до крупномасштабного обучения моделей, EasyDeL предоставляет инструменты и оптимизации для эффективного масштабирования ваших моделей и рабочих процессов.
Простота использования . Несмотря на свои мощные функции, EasyDeL имеет интуитивно понятный API, что делает его доступным как для новичков, так и для опытных практиков.
Передовые исследования : быстрое внедрение последних достижений в области архитектур моделей, методов обучения и методов оптимизации.
pip install easydel
import easydel as ed
ed . FlexibleAttentionModule . run_attention_benchmarks ()
Полную документацию и примеры можно найти на сайте EasyDeL Documentation.
Вот улучшенная версия ваших последних обновлений:
jax_flash_attn2
, и внимание по умолчанию теперь установлено на jax_flash_attn2
в CPU/GPU/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
— это механизм обслуживания API для производственных или исследовательских целей, обеспечивающий стабильный, эффективный API, подобный API 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 }
}