TRL documentation
SDFT
SDFT
Self-Distilled Fine-Tuning (SDFT), Idan Shenfeld, Mehul Damani, Jonas Hübotter ve Pulkit Agrawal tarafından kaleme alınan Self-Distillation Enables Continual Learning makalesinde tanımlanmıştır.
Mevcut yetenekleri zayıflatmadan modellere yeni beceriler ve bilgiler kazandırmayı mümkün kılan sürekli öğrenme, temel modeller için temel bir zorluk olmaya devam etmektedir. On-policy pekiştirmeli öğrenme unutmayı azaltabilir, ancak çoğu zaman kullanılamayan açık ödül fonksiyonları gerektirir. Uzman gösterimlerinden öğrenme, birincil alternatif olarak, doğası gereği off-policy olan denetimli ince ayar (SFT) tarafından baskılanmaktadır. Kendi Kendine Damıtma İnce Ayarı (SDFT) adını verdiğimiz, gösterimlerden doğrudan on-policy öğrenmeyi mümkün kılan basit bir yöntem sunuyoruz. SDFT, bir gösterim koşullu modeli kendi öğretmeni olarak kullanarak bağlam içi öğrenmeden (in-context learning) yararlanmakta ve yeni beceriler kazanırken önceki yetenekleri koruyan on-policy eğitim sinyalleri üretmektedir. Beceri öğrenme ve bilgi edinme görevlerinde SDFT, SFT'yi tutarlı bir şekilde geride bırakmakta; yeni görev doğruluğunu artırırken felaket unutmayı (catastrophic forgetting) önemli ölçüde azaltmaktadır. Sıralı öğrenme deneylerinde SDFT, tek bir modelin performans düşüşü olmadan zamanla birden fazla beceri biriktirmesini sağlayarak, gösterimlerden sürekli öğrenmeye giden pratik bir yol olarak on-policy damıtmayı (distillation) ortaya koymaktadır.
Nasıl çalışır
Düz denetimli ince ayar, gösterim metnini politika dışı (off-policy) olarak eğitir ve bu durum, önceki yeteneklerin üzerine yazılmasına eğilimlidir. SDFT bunun yerine politika içi (on-policy) öğrenir: öğrenci, düz prompt üzerinden üretim yapar; öğretmen — yani prompt ile örneğin privileged_context değerini gören aynı model — bu tokenları yeniden puanlar ve gösterim koşullu dağılımı öğrenciye damıtılarak geri aktarılır. Öğretmen ve öğrenci, yalnızca gördükleri farklı olan tek bir ağdır ve bu durum bir öz-damıtma döngüsü oluşturur.
Öğretmen seçimi
teacher_model_kind, modelin hangi kopyasının öğretmen olarak kullanılacağını seçer. "base" (varsayılan), başlangıç ağırlıklarını sabit bir referans olarak dondurur ve makaleyle uyumludur; "live", sıfır gecikmeli bir öz-öğretmen için mevcut öğrenciyi yeniden kullanır; "ema", üstel hareketli ortalama (exponential moving average) sürdürür ve her teacher_sync_steps adımda teacher_update_rate oranında yeniden senkronize edilir. PEFT altında, "base", öğretmen ileri geçişinde (forward) adaptörün devre dışı bırakılmasıyla temel ağırlıkların geri kazanılmasıyla elde edilir ve saf LoRA eğitiminde "ema", ikinci bir model kopyası yerine hareketli ortalama, ayrı bir "teacher" adaptöründe tutulur. Saf olmayan LoRA PEFT modelleriyle (ör. modules_to_save veya bias) "ema" desteklenmez, çünkü ayrı bir EMA kopyası öğrenciyle parametre eşleşmesi yapılamaz.
Varsayılan olarak öğrenci, düz istemden (prompt) üretim yapar; bunun yerine gösterim koşullu istemden örnek almak için generate_from_teacher=True değerini ayarlayın; bu, on-policy sadakatini daha yüksek kaliteli rollouts ile takas eder. Distilasyon hedefi distillation_mode (varsayılan olarak "topk_logits", alternatif olarak "full_logits" ve "sampled_token"), distillation_alpha ve distillation_topk ile belirlenir; num_loss_tokens_to_skip, kayıptan (loss) baştaki tamamlama tokenlarını düşürür. Eğitim yalnızca metin tabanlıdır; üretim varsayılan olarak transformers üzerinden çalışır, use_vllm=True olduğunda ise vLLM (colocate veya server modu) kullanılır.
Kullanım
from datasets import Dataset
from trl.experimental.sdft import SDFTConfig, SDFTTrainer
dataset = Dataset.from_dict(
{
"prompt": [[{"role": "user", "content": "Solve 2+2."}]],
"privileged_context": ["Example answer: 4."],
}
)
training_args = SDFTConfig(
output_dir="sdft-model",
distillation_alpha=0.5,
distillation_mode="topk_logits",
distillation_topk=5,
max_completion_length=64,
)
trainer = SDFTTrainer(
model="Qwen/Qwen2.5-1.5B-Instruct",
args=training_args,
train_dataset=dataset,
)
trainer.train()Öğrenci istemci yerine öğretmen koşullu istemciden üretmek için generate_from_teacher=True değerini ayarlayın.
Öğretmen istemcisinin nasıl oluşturulacağını özelleştirmek için experimental.sdft.SDFTConfig üzerinde teacher_prompt_template değerini ayarlayın.
Öğretmenin vLLM sunucusundan sunulması
teacher_model_kind="live" kullanıldığında öğretmen, ağırlıkları vLLM sunucusu tarafından zaten tutulan mevcut öğrencidir (ağırlıklar, üretim için her adımda senkronize edilir). Öğretmen log-olasılıklarını ayrı bir yerel öğretmen ileri geçişi çalıştırmak yerine aynı sunucuda puanlamak için use_teacher_server=True ayarlayın; bu, öğretmeni eğitim adımından tamamen çıkarır:
training_args = SDFTConfig(
output_dir="sdft-model",
use_vllm=True,
vllm_mode="server",
teacher_model_kind="live",
use_teacher_server=True,
distillation_mode="sampled_token",
)Öğretmen sunucusu kullanılırken:
use_vllm=Truevevllm_mode="server"zorunludurteacher_model_kinddeğeri"live"olmalıdır (sunucu, güncel öğrenci ağırlıklarını barındırır)distillation_mode"sampled_token"(gerçekleşen token üzerinde ters KL) veya"topk_logits"olmalıdır. Sunucu, öğretmenin kendi top-k log-olasılıklarını döndürdüğü içintopk_logits, öğretmenin top-k desteği üzerinde damıtma yapar (yerel amaçtan farklı olarak öğrencinin desteğini kullanamaz);"live"bir öğretmenle bu iki destek neredeyse çakışır.full_logitskullanılamaz.
Beklenen veri seti sütunları
Her örnek şunları sağlamalıdır:
prompt: öğrenciye yönelik istemprivileged_context: bir gösterim, ipucu veya ayrıcalıklı geri bildirim gibi yalnızca öğretmen için ek bilgiler
Eğiticinin istem işleme mekanizması hem standart metin istemlerini hem de sohbet istemlerini destekler.
Geri Çağrılar
Trainer, hata ayıklama, gözlemlenebilirlik ve testler için faydalı olan küçük bir geri çağrı kancası seti yayar. Bu kancalar, deneysel öz-distilasyon iş akışları için pratik entegrasyon noktaları olarak tasarlanmıştır.
Paylaşılan öz-distilasyon kancaları:
on_self_distillation_batch_prepared: bir self-distillation partisi hazır olduğunda tetiklenir. Önemlik örneklemleme kırpma girdileri kullanılabilirse, yükprompt_ids,completion_idsveold_per_token_logpsiçerir.on_generation_batch_built: yeni bir tamponlu üretim partisi oluşturulduğunda tetiklenir. Yük,generate_everyvesteps_per_generationdeğerlerini içerir.
SDFT'ye özgü kancası:
on_generation_prompts_selected: SDFT, on-policy üretim için prompt kaynağını seçtiğinde tetiklenir. Yük, seçilengeneration_promptsve ilgiligeneration_prompt_textdeğerlerini içerir.
Örnek betik
Komut satırından SDFT eğitimini başlatmak için examples/sdft_privileged_context/sdft_privileged_context.py dosyasını kullanın. Betik, Hub’daki herhangi bir nedensel LM’yi, --dataset_path ile özel yerel veri setlerini ve standart ModelConfig bayrakları ile PEFT/LoRA’yı destekler.
python examples/sdft_privileged_context/sdft_privileged_context.py \
--model_name_or_path Qwen/Qwen3.5-0.8B \
--dataset_name your-org/your-dataset \
--output_dir outputs/sdft-qwen3.5-0.8b \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 16 \
--learning_rate 2e-5 \
--max_prompt_length 1024 \
--max_completion_length 512 \
--generate_from_teacher \
--teacher_model_kind ema \
--teacher_sync_steps 1 \
--teacher_update_rate 0.05 \
--eval_strategy steps \
--eval_steps 50 \
--report_to wandbOrijinal uygulama idanshen/Self-Distillation adresinde mevcuttur.
SDFTConfig
sınıf trl.experimental.sdft.SDFTConfig
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool | None = Nonefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Nonegradient_checkpointing: bool = Truegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 10logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list[str] = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: accelerate.parallelism_config.ParallelismConfig | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Falselabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1model_init_kwargs: dict[str, typing.Any] | None = Nonetrust_remote_code: bool = Falsedisable_dropout: bool = Truemax_prompt_length: int | None = 512num_generations: int = 8num_generations_eval: int | None = Nonemax_completion_length: int | None = 256ds3_gather_for_generation: bool = Trueshuffle_dataset: bool = Truegeneration_batch_size: int | None = Nonesteps_per_generation: int | None = Nonetemperature: float = 1.0top_p: float = 1.0top_k: int = 0min_p: float | None = Nonegeneration_kwargs: dict[str, typing.Any] | None = Nonechat_template_kwargs: dict[str, typing.Any] | None = Nonerepetition_penalty: float = 1.0cache_implementation: str | None = Noneuse_vllm: bool = Falseuse_teacher_server: bool = Falsevllm_mode: str = 'colocate'vllm_model_impl: str = 'vllm'vllm_enable_sleep_mode: bool = Falsevllm_server_base_url: str | None = Nonevllm_server_host: str = '0.0.0.0'vllm_server_port: int = 8000vllm_group_port: int = 51216vllm_server_timeout: float = 240.0vllm_tensor_parallel_size: int = 1vllm_gpu_memory_utilization: float = 0.3vllm_max_model_length: int | None = Nonenum_iterations: int = 1teacher_model_kind: str = 'base'teacher_update_rate: float = 0.05teacher_sync_steps: int = 1distillation_alpha: float = 0.5distillation_mode: typing.Literal['sampled_token', 'full_logits', 'topk_logits'] = 'topk_logits'distillation_topk: int | None = 100distillation_is_clip: float | None = 2.0distillation_add_tail: bool = Falsegenerate_from_teacher: bool = Falseteacher_prompt_template: str = '{prompt}\n\n{privileged_context}'num_loss_tokens_to_skip: int = 0 )
SDFT kaybını kontrol eden parametreler
- distillation_alpha (
float, isteğe bağlı, varsayılan0.5) — SDFT top-k logit damıtması için ayrılma interpolasyon katsayısı. - distillation_mode (
Literal["sampled_token", "full_logits", "topk_logits"], isteğe bağlı, varsayılan"topk_logits") — Distillation hedef modu. SDFT varsayılan olarak top-k logit distillation kullanır. - distillation_topk (
int, isteğe bağlı, varsayılan100) — Varsayılan SDFT top-k logit hedefinin kullandığı üst token sayısı. - distillation_is_clip (
float, isteğe bağlı, varsayılan2.0) — Kendine damıtma (self-distillation) içindeki önem örneklemesi için kırpma katsayısı.Nonekırpma işlemini devre dışı bırakır. - distillation_add_tail (
bool, isteğe bağlı, varsayılanFalse) — Top-k dışındaki olasılık kütlesi için bir kuyruk kovası eklenip eklenmeyeceğini belirtir. - num_loss_tokens_to_skip (
int, isteğe bağlı, varsayılan0) — Damıtma kaybından hariç tutulacak başlangıç tamamlama jetonlarının sayısı.
Öğretmeni kontrol eden parametreler
- teacher_model_kind (
str, isteğe bağlı, varsayılan"base") — SDFT için anlamsal öğretmen seçimi.basebaşlangıç öğrencisini,livemevcut öğrenciyi veemaüstel ortalama alınmış öğretmeni kullanır. - teacher_update_rate (
float, isteğe bağlı, varsayılan0.05) —teacher_model_kind="ema"kullanıldığında EMA güncelleme oranı olarak kullanılır.1.0değeri, güncellemeyi sert bir yazma işlemine indirger ve öğretmeni periyodik olarak mevcut öğrenci ağırlıklarıyla yeniden senkronize eder. - teacher_sync_steps (
int, isteğe bağlı, varsayılan1) — Öğretmen güncellemeleri arasındaki optimizör adım sayısı.
Öğretmen koşullu üretimi kontrol eden parametreler
- generate_from_teacher (
bool, isteğe bağlı, varsayılanFalse) — On-policy üretimde, öğrenci istemci yerine öğretmen koşullu istemcinin kullanılıp kullanılmayacağı. - teacher_prompt_template (
str, isteğe bağlı, varsayılan"{prompt}\n\n{privileged_context}") — Öğrenci istemini ve ayrıcalıklı bağlamı öğretmen istemine birleştirmek için kullanılan şablon.
Modeli kontrol eden parametreler
- model_init_kwargs (
dict[str, Any], isteğe bağlı) —SDFTTrainer'inmodelargümanı bir dize olarak verildiğinde kullanılan,transformers.AutoModelForCausalLM.from_pretrainediçin anahtar kelime argümanları.revisiondeğeri, işleme sınıfı yüklenirken de kullanılır. - trust_remote_code (
bool, isteğe bağlı, varsayılanFalse) — Hub'dan özel Python kodu içeren modellerin ve tokenizer'ların yüklenmesine izin verilip verilmeyeceğini belirtir. Hem öğrenci hem de öğretmen için from_pretrained ve from_pretrained işlevlerine iletilir. - disable_dropout (
bool, isteğe bağlı, varsayılanTrue) — Öğrenci ve öğretmen modellerinde dropout'un devre dışı bırakılıp bırakılmayacağı.
Veri ön işleme sürecini kontrol eden parametreler
- remove_unused_columns (
bool, isteğe bağlı, varsayılanFalse) — Veri setinde yalnızca trainer'ın gerektirdiği sütunların korunup korunmayacağını belirtir. Trainer'ın ihtiyaç duyduğu ek sütunlar (örneğinprivileged_context) sağlıyorsanız bunuFalseolarak bırakın. - max_prompt_length (
int, isteğe bağlı, varsayılan512) — Maksimum istem uzunluğu. Daha uzun istemler soldan kırpılır. - shuffle_dataset (
bool, isteğe bağlı, varsayılanTrue) — Eğitim veri setinin karıştırılıp karıştırılmayacağı.
Üretimi kontrol eden parametreler
- num_generations (
int, isteğe bağlı, varsayılan8) — Örneklenecek nesil sayısı. Etkili parti boyutu (num_processes per_device_batch_size gradient_accumulation_steps) bu değere tam bölünmelidir. - num_generations_eval (
int, isteğe bağlı) — Değerlendirme sırasında örneklenmesi gereken nesil sayısı. Bu, hesaplama tasarrufu sağlamak için değerlendirme sırasında daha az nesil kullanılmasına olanak tanır.Noneisenum_generationsdeğeri kullanılır. - max_completion_length (
int, isteğe bağlı, varsayılan256) — Oluşturulan tamamlamanın maksimum uzunluğu. - temperature (
float, isteğe bağlı, varsayılan1.0) — Örnekleme için sıcaklık. Sıcaklık ne kadar yüksekse, tamamlamalar o kadar rastgele olur. - top_p (
float, isteğe bağlı, varsayılan1.0) — Dikkate alınacak üst tokenların kümülatif olasılığını kontrol eden bir sayı. (0, 1] aralığında olmalıdır. Tüm tokenları dikkate almak için 1.0 olarak ayarlayın. - top_k (
int, isteğe bağlı, varsayılan0) — Top-k filtreleme için en yüksek olasılığa sahip tutulacak sözlük belirteçlerinin sayısı.0ise top-k filtreleme devre dışı bırakılır ve tüm belirteçler dikkate alınır. - min_p (
float, isteğe bağlı) — En olası token'ın olasılığına göre ölçeklendirilen minimum token olasılığı. 0.0 ile 1.0 arasında bir değer olmalıdır. Tipik değerler 0.01-0.2 aralığındadır. - repetition_penalty (
float, isteğe bağlı, varsayılan1.0) — İstemde ve şu ana kadar üretilen metinde görünüp görünmediklerine göre yeni jetonları cezalandıran bir ondalık sayı. 1.0'tan büyük değerler modele yeni jetonlar kullanmayı teşvik ederken, 1.0'dan küçük değerler modele jetonları tekrarlamayı teşvik eder. - cache_implementation (
str, isteğe bağlı) — use_vllm False olarak ayarlandığında daha hızlı üretim için önbellek yönteminin uygulaması. - generation_kwargs (
dict[str, Any], isteğe bağlı) — Tamamlamalar örneklenirkenGenerationConfig(transformers kullanılıyorsa) veyaSamplingParams(vLLM kullanılıyorsa) fonksiyonuna iletilecek ek anahtar kelime argümanları. Üretim davranışını daha da özelleştirmek için, örneğinsuppress_tokens,num_beamsgibi ayarları yapmak amacıyla kullanılabilir. Diğer üretim parametreleriyle (örneğinmin_p,top_pvb.) çakışan anahtarlar içeriyorsa, bu parametrelerin üzerine yazar. - chat_template_kwargs (
dict[str, Any], isteğe bağlı) — Tamamlamalar oluşturulurkenapply_chat_templatefonksiyonuna iletilecek ek anahtar kelime argümanları. - ds3_gather_for_generation (
bool, isteğe bağlı, varsayılanTrue) — Bu ayar, DeepSpeed ZeRO-3 için geçerlidir. Etkinleştirilirse, üretim için politika modeli ağırlıkları toplanır ve üretim hızı artırılır. Ancak bu seçeneğin devre dışı bırakılması, tek bir GPU'nun VRAM kapasitesini aşan modellerin eğitimine olanak tanır; bunun bedeli ise daha yavaş bir üretime yol açmasıdır. Bu seçeneğin devre dışı bırakılması, vLLM üretimiyle uyumlu değildir.
vLLM tarafından desteklenen üretim hızlandırmasını kontrol eden parametreler
- use_vllm (
bool, isteğe bağlı, varsayılanFalse) — Tamamlamaları üretmek için vLLM kullanılacak mı?Trueolarak ayarlanırsa, eğitimci üretim için varsayılan model.generate() yerine vLLM kullanır. Bunun içinvllmpaketinin yüklü olması gerekir. - use_teacher_server (
bool, isteğe bağlı, varsayılanFalse) — Öğretmen logprobs'larını yerel bir öğretmen ileri geçişi yerine çalışan vLLM üretim sunucusundan hesaplar. Yalnızcateacher_model_kind='live'ileuse_vllm=Truevevllm_mode='server'kullanıldığında vedistillation_mode{‘sampled_token’, ‘topk_logits’} kümesinde olduğunda desteklenir (sunucu, tam sözlük yerine öğretmenin üst-k logprobs'larını döndürür;topk_logits, öğretmenin kendi üst-k desteği üzerinde damıtma yapar). - vllm_mode (
str, isteğe bağlı, varsayılan"colocate") —use_vllmTrueolarak ayarlandığında vLLM entegrasyonu için kullanılacak mod.'server'veya'colocate'değerlerinden biri olmalıdır.'server': Eğitimci, üretim isteklerini ayrı bir vLLM sunucusuna gönderir. Bir vLLM sunucusunun çalıştığından emin olun (vllm serveile başlatın).'colocate': vLLM aynı süreçte çalışır ve eğitim GPU'larını paylaşır. Bu, ayrı bir sunucuya olan ihtiyacı ortadan kaldırır ancak eğitimle kaynak çakışmasına neden olabilir. - vllm_model_impl (
str, isteğe bağlı, varsayılan"vllm") — vLLM için kullanılacak model uygulaması.transformersveyavllmdeğerlerinden biri olmalıdır.transformers: Model uygulaması içintransformersarka ucunu kullanın.vllm: Model uygulaması içinvllmkitaplığını kullanın. - vllm_enable_sleep_mode (
bool, isteğe bağlı, varsayılanFalse) — Optimizatör adımı sırasında ağırlıkları/önbelleği boşaltmak için vLLM uyku modunu etkinleştirir. GPU bellek kullanımını düşük tutar, ancak motorun uyanması ev sahibi–cihaz aktarma gecikmesi ekler. - vllm_server_base_url (
str, isteğe bağlı) — vLLM sunucusu için temel URL (ör. ‘http://localhost:8000’). Verildiğindevllm_server_hostvevllm_server_portyok sayılır. - vllm_server_host (
str, isteğe bağlı, varsayılan"0.0.0.0") — Bağlanacak vLLM sunucusunun host adresi. vllm_server_base_url sağlanırsa yok sayılır. - vllm_server_port (
int, isteğe bağlı, varsayılan8000) — Bağlanacak vLLM sunucusunun portu. vllm_server_base_url sağlanırsa yok sayılır. - vllm_group_port (
int, isteğe bağlı, varsayılan51216) — Ağırlık güncelleme grubu için port numarası. Bu, vLLM sunucusuyla iletişim kurmak için kullanılır. Port meşgul değilse değiştirmeye gerek yoktur. - vllm_server_timeout (
float, isteğe bağlı, varsayılan240.0) — vLLM sunucusunun ayağa kalkması için beklenen toplam zaman aşımı süresi (saniye cinsinden). Sunucu zaman aşımı süresinin sonunda ayağa kalkmazsa birConnectionErroryükseltilir. - vllm_tensor_parallel_size (
int, isteğe bağlı, varsayılan1) — vLLM için tensor paralel boyutunu kontrol eder. Bu ayar yalnızcavllm_modedeğeri'colocate'olarak ayarlandığında geçerlidir.vllm_mode='server'kullanıyorsanız, bu parametrenin vLLM sunucusunu--vllm_tensor_parallel_sizebayrağıyla başlatırken ayrı olarak geçirilmesi gerekir. - vllm_gpu_memory_utilization (
float, isteğe bağlı, varsayılan0.3) — vLLM için GPU bellek kullanımını kontrol edin. Bu ayar yalnızcavllm_mode'colocate'olarak ayarlandığında geçerlidir.vllm_mode='server'kullanıyorsanız, bu parametrenin vLLM sunucusunu--vllm_gpu_memory_utilizationbayrağıyla başlatırken ayrı olarak geçirilmesi gerekir. - vllm_max_model_length (
int, isteğe bağlı) — vLLM için bağlam penceresi. Veri setindeki en uzun istem uzunluğunamax_completion_lengtheklenerek en az bu değere ayarlayın; belirtilmezse model yapılandırmasından çıkarılır.
Eğitimi kontrol eden parametreler
- num_iterations (
int, isteğe bağlı, varsayılan1) — Parti başına yineleme sayısı (algoritmada μ olarak gösterilir). - generation_batch_size (
int, isteğe bağlı) — Üretim için kullanılacak parti boyutu.Noneise, etkin eğitim parti boyutuna ayarlanır:per_device_train_batch_size * num_processes * steps_per_generation. - steps_per_generation (
int, isteğe bağlı) — Her üretim için adım sayısı.Noneise, varsayılan olarakgradient_accumulation_stepsdeğerini alır.
experimental.sdft.SDFTTrainer için yapılandırma sınıfı.
SDFTTrainer
sınıf trl.experimental.sdft.SDFTTrainer
< source >( model: typing.Union[str, transformers.modeling_utils.PreTrainedModel, torch.nn.Module]args: trl.experimental.sdft.sdft_config.SDFTConfig | None = Nonetrain_dataset: datasets.arrow_dataset.Dataset | datasets.iterable_dataset.IterableDataset | None = Noneeval_dataset: datasets.arrow_dataset.Dataset | datasets.iterable_dataset.IterableDataset | dict[str, datasets.arrow_dataset.Dataset | datasets.iterable_dataset.IterableDataset] | None = Noneprocessing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.processing_utils.ProcessorMixin | None = Nonecallbacks: list[transformers.trainer_callback.TrainerCallback] | None = Noneoptimizers: tuple[typing.Optional[torch.optim.Optimizer], typing.Optional[torch.optim.lr_scheduler.LambdaLR]] = (None, None)peft_config: PeftConfig | None = None )
Açık öğretmen istemcileriyle SDFT tarzı politika-üstü öz-distilasyon için Trainer.
eğit
< source >( resume_from_checkpoint: str | bool | None = Nonetrial: optuna.Trial | dict[str, Any] | None = Noneignore_keys_for_eval: list[str] | None = None ) → ~trainer_utils.TrainOutput
Parametreler
- resume_from_checkpoint (
strveyabool, isteğe bağlı) —strise, önceki birTrainerörneği tarafından kaydedilen bir kontrol noktasının yerel yolu.boolise veTruedeğerine eşitse, önceki birTrainerörneği tarafından args.output_dir içinde kaydedilen son kontrol noktasını yükler. Mevcutsa, eğitim burada yüklenen model/optimizör/zamanlayıcı durumlarından devam eder. - trial (
optuna.Trialveyadict[str, Any], isteğe bağlı) — Hiperparametre araması için deneme çalışması veya hiperparametre sözlüğü. - ignore_keys_for_eval (
list[str], isteğe bağlı) — Eğitim sırasında değerlendirme için tahminleri toplarken göz ardı edilmesi gereken, model çıktısındaki (bir sözlükse) anahtarların listesi.
Dönüş değeri
~trainer_utils.TrainOutput
Küresel adım sayısını, eğitim kaybını ve metrikleri içeren nesne.
Ana eğitim giriş noktası.
Modeli kaydeder, böylece from_pretrained() kullanarak yeniden yükleyebilirsiniz.
Yalnızca ana süreçten kaydedecektir.
push_to_hub
< source >( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = None**kwargs )
Parametreler
- commit_message (
str, isteğe bağlı, varsayılan"End of training") — İterlerken gönderilecek mesaj. - blocking (
bool, isteğe bağlı, varsayılanTrue) — Fonksiyonun yalnızcagit pushişlemi tamamlandığında mı değer döndürmesi gerektiğini belirtir. - token (
str, isteğe bağlı, varsayılanNone) — Trainer'ın orijinal argümanlarını üzerine yazma iznine sahip jeton. - revision (
str, isteğe bağlı) — Commit'in alınacağı git revizyonu. Varsayılan olarak “main” dalının başıdır. - kwargs (
dict[str, Any], isteğe bağlı) —~Trainer.create_model_cardile birlikte iletilen ek anahtar kelime argümanları.
self.model ve self.processing_class öğelerini self.args.hub_model_id deposundaki 🤗 model hub'ına yükleyin.