คุณสมบัติที่สำคัญ | อัพเดทล่าสุด | วิสัยทัศน์ | เริ่มต้นอย่างรวดเร็ว | เอกสารอ้างอิง | ใบอนุญาต
EasyDeL เป็นเฟรมเวิร์กโอเพ่นซอร์สที่ออกแบบมาเพื่อปรับปรุงและปรับปรุงกระบวนการฝึกอบรมโมเดลการเรียนรู้ของเครื่อง โดยเน้นที่ Jax/Flax เป็นหลัก โดยมอบโซลูชันที่สะดวกและมีประสิทธิภาพสำหรับการฝึกอบรมและการให้บริการโมเดล Flax/Jax บน TPU/GPU ในวงกว้าง
EasyDeL โดดเด่นด้วยการให้ความยืดหยุ่นและความโปร่งใสที่เหนือชั้น:
สถาปัตยกรรมแบบเปิด : ทุกองค์ประกอบของ EasyDeL เปิดสำหรับการตรวจสอบ การแก้ไข และการปรับแต่ง ที่นี่ไม่มีกล่องดำ
ความสามารถในการแฮ็กที่เป็นแกนหลัก : เราเชื่อในการให้คุณควบคุมได้อย่างเต็มที่ ไม่ว่าคุณต้องการที่จะปรับแต่งฟังก์ชั่นเล็กๆ น้อยๆ หรือยกเครื่องลูปการฝึกซ้อมทั้งหมด EasyDeL ช่วยให้คุณทำมันได้
การเข้าถึงโค้ดแบบกำหนดเอง : การใช้งานที่กำหนดเองทั้งหมดพร้อมใช้งานและมีเอกสารประกอบอย่างดี ช่วยให้คุณเข้าใจ เรียนรู้ และแก้ไขระบบภายในได้ตามต้องการ
ส่งเสริมการทดลอง : เราสนับสนุนให้ผู้ใช้ทดลอง ขยาย และปรับปรุงโค้ดเบสที่มีอยู่ นวัตกรรมของคุณอาจกลายเป็นคุณสมบัติสำคัญชิ้นต่อไปได้!
การพัฒนาที่ขับเคลื่อนโดยชุมชน : แบ่งปันการใช้งานที่กำหนดเองและการปรับปรุงของคุณกับชุมชน ส่งเสริมสภาพแวดล้อมการทำงานร่วมกันเพื่อพัฒนาการวิจัยและพัฒนา ML
ด้วย EasyDeL คุณจะไม่ถูกจำกัดด้วยเฟรมเวิร์กที่เข้มงวด แต่คุณจะมีชุดเครื่องมือที่ยืดหยุ่นและทรงพลังซึ่งปรับให้เข้ากับความต้องการของคุณได้ ไม่ว่าเครื่องมือเหล่านั้นจะมีเอกลักษณ์หรือเฉพาะทางเพียงใดก็ตาม ไม่ว่าคุณจะดำเนินการวิจัยที่ล้ำสมัยหรือสร้างระบบ ML ที่พร้อมสำหรับการผลิต EasyDeL มอบอิสระในการสร้างสรรค์สิ่งใหม่ๆ โดยไม่มีข้อจำกัด
EasyDeL ให้ความยืดหยุ่นที่เหนือชั้นในการปรับแต่งและเพิ่มประสิทธิภาพโมเดลของคุณ:
กลยุทธ์การแบ่งส่วน : ปรับแต่งและทดสอบกลยุทธ์การแบ่งส่วนต่างๆ ได้อย่างง่ายดายเพื่อเพิ่มประสิทธิภาพการทำงานบนอุปกรณ์หลายเครื่อง
การปรับแต่งอัลกอริทึม : ปรับเปลี่ยนและปรับแต่งอัลกอริธึมให้เหมาะกับความต้องการเฉพาะและการกำหนดค่าฮาร์ดแวร์ของคุณ
กลไกความสนใจ : เลือกจากกลไกความสนใจมากกว่า 10 ประเภทที่ปรับให้เหมาะสมสำหรับ GPU/TPU/CPU ได้แก่:
การปรับแต่งระดับนี้ช่วยให้คุณสามารถบีบประสิทธิภาพทุกออนซ์จากฮาร์ดแวร์ของคุณ ในขณะเดียวกันก็ปรับแต่งลักษณะการทำงานของโมเดลให้ตรงตามความต้องการของคุณ
EasyDeL พัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการของชุมชนการเรียนรู้ของเครื่อง ในการอัปเดตที่กำลังจะมาถึง เราวางแผนที่จะเปิดตัว:
ความยืดหยุ่น : EasyDeL นำเสนอการออกแบบโมดูลาร์ที่ช่วยให้นักวิจัยและนักพัฒนาสามารถผสมและจับคู่ส่วนประกอบต่างๆ ได้อย่างง่ายดาย ทดลองกับสถาปัตยกรรมที่แตกต่างกัน (รวมถึง Transformers, Mamba, RWKV และ ...) และปรับโมเดลให้เข้ากับกรณีการใช้งานเฉพาะ
ประสิทธิภาพ : EasyDeL ใช้ประโยชน์จากพลังของ JAX และ Flax นำเสนอการใช้งานโมเดลที่ล้ำสมัยและเทคนิคการฝึกอบรมที่มีประสิทธิภาพสูง ปรับให้เหมาะสมสำหรับทั้ง TPU และ GPU
ความสามารถในการปรับขนาด : ตั้งแต่การทดลองขนาดเล็กไปจนถึงการฝึกโมเดลขนาดใหญ่ 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/TPUinference
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
Trainers คลาส 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 ของ OpenAI ที่เสถียร มีประสิทธิภาพ และเหมือนกับ API
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 }
}