Accelerate documentation

TPU eğitimi

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.15.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

TPU eğitimi

TPU (Tensor Processing Unit), modelleri verimli bir şekilde eğitmek için özel olarak tasarlanmış bir donanım türüdür. Accelerate, TPU eğitimini destekler ancak özellikle grafik derlemesi konusunda dikkat etmeniz gereken birkaç nokta vardır. Bu öğretici, derlemeyi kısaca ele alır; daha fazla ayrıntı için Training on TPUs with Accelerate kılavuzuna göz atın.

Derleme

Bir TPU, ileri geçiş, geri geçiş ve optimizör adımı gibi eğitim adımındaki tüm işlemlerin bir grafiğini oluşturur. Bu nedenle, ilk eğitim adımı her zaman biraz zaman alır; çünkü bu grafiğin oluşturulması ve derlenmesi zaman gerektirir. Ancak derleme tamamlandığında önbelleğe alınır ve sonraki tüm adımlar çok daha hızlı çalışır.

Anahtar, kodunuzu tekrar derlememektir; aksi takdirde eğitim süper yavaş olur. Bu, tüm işlemlerinizin tam olarak aynı olması gerektiği anlamına gelir:

  • partilerinizdeki tüm tensörler aynı uzunlukta olmalıdır (örneğin, NLP görevleri için dinamik dolgu kullanılmamalıdır)
  • kodunuz statik olmalıdır (örneğin, girdiye bağlı olarak farklı uzunluklara sahip for döngüleri içeren katmanlar, örneğin bir LSTM, kullanılmamalıdır)

Ağırlık bağlama

Yaygın bir dil modeli tasarımı, gömme (embedding) ve softmax katmanlarının ağırlıklarını bağlamaktır. Ancak modeli bir TPU'ya taşımak (ister kendiniz yapın ister prepare() yöntemine iletin) ağırlık bağlamayı bozar ve ağırlıkları yeniden bağlamanız gerekir.

TPU'lar için betiğinizde özel davranışlar (ağırlık bağlama gibi) eklemek için önce distributed_type değerini DistributedType.TPU olarak ayarlayın. Ardından ağırlıkları bağlamak için tie_weights yöntemini kullanabilirsiniz.

if accelerator.distributed_type == DistributedType.TPU:
    model.tie_weights()
Update on GitHub