{"id":42139,"date":"2026-05-28T17:00:33","date_gmt":"2026-05-28T14:00:33","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=42139"},"modified":"2026-05-28T17:01:07","modified_gmt":"2026-05-28T14:01:07","slug":"pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/","title":{"rendered":"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision &#8211; AMP)"},"content":{"rendered":"<h2>PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision &#8211; AMP)<\/h2>\n<p>Derin \u00f6\u011frenme modellerinin e\u011fitimi, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleri ve karma\u015f\u0131k mimarilerle u\u011fra\u015f\u0131rken, \u00f6nemli hesaplama kaynaklar\u0131 gerektirir. Bu kaynaklar aras\u0131nda bellek bant geni\u015fli\u011fi, i\u015flemci g\u00fcc\u00fc ve enerji t\u00fcketimi yer al\u0131r. Geleneksel olarak, derin \u00f6\u011frenme modelleri genellikle 32-bit kayan nokta (FP32) hassasiyetinde e\u011fitilir. Ancak, bu hassasiyet \u00e7o\u011fu zaman gere\u011finden fazlad\u0131r ve performans\u0131 optimize etmek i\u00e7in potansiyel sunar. Kar\u0131\u015f\u0131k hassasiyet (Mixed Precision) e\u011fitimi, bu potansiyeli ortaya \u00e7\u0131karmak i\u00e7in pop\u00fcler bir tekniktir. PyTorch, Otomatik Kar\u0131\u015f\u0131k Hassasiyet (AMP) ile bu s\u00fcreci \u00f6nemli \u00f6l\u00e7\u00fcde basitle\u015ftirir. Bu makalede, PyTorch&#8217;ta AMP&#8217;nin ne oldu\u011funu, neden kullan\u0131lmas\u0131 gerekti\u011fini, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve pratikte nas\u0131l uygulanaca\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>Kar\u0131\u015f\u0131k Hassasiyet Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Kar\u0131\u015f\u0131k hassasiyet, bir sinir a\u011f\u0131n\u0131n e\u011fitiminde hem daha d\u00fc\u015f\u00fck hassasiyetli (\u00f6rne\u011fin, 16-bit kayan nokta &#8211; FP16) hem de daha y\u00fcksek hassasiyetli (\u00f6rne\u011fin, 32-bit kayan nokta &#8211; FP32) veri tiplerini birlikte kullanma y\u00f6ntemidir. Bu yakla\u015f\u0131m\u0131n temel motivasyonu, bilgisayar donan\u0131m\u0131n\u0131n (\u00f6zellikle GPU&#8217;lar\u0131n) FP16 i\u015flemleri i\u00e7in optimize edilmi\u015f olmas\u0131d\u0131r.<\/p>\n<p>FP16&#8217;n\u0131n avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong>Daha H\u0131zl\u0131 Hesaplamalar:<\/strong> Modern GPU&#8217;lar, \u00f6zellikle NVIDIA&#8217;n\u0131n Tensor \u00c7ekirdekleri gibi \u00f6zel donan\u0131mlar, FP16 matris \u00e7arp\u0131mlar\u0131 ve evri\u015fimleri gibi i\u015flemleri FP32&#8217;ye g\u00f6re \u00e7ok daha h\u0131zl\u0131 ger\u00e7ekle\u015ftirebilir. Bu, e\u011fitim s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilir.<br \/>\n*   <strong>Daha Az Bellek Kullan\u0131m\u0131:<\/strong> FP16, FP32&#8217;ye g\u00f6re bellekte yar\u0131 yar\u0131ya daha az yer kaplar. Bu, daha b\u00fcy\u00fck modellerin veya daha b\u00fcy\u00fck toplu i\u015f boyutlar\u0131n\u0131n (batch sizes) belle\u011fe s\u0131\u011fd\u0131r\u0131labilmesi anlam\u0131na gelir. Bellek bant geni\u015fli\u011fi darbo\u011fazlar\u0131 da azalt\u0131l\u0131r.<br \/>\n*   <strong>Daha D\u00fc\u015f\u00fck Enerji T\u00fcketimi:<\/strong> Daha az hesaplama ve daha az bellek eri\u015fimi, genellikle daha d\u00fc\u015f\u00fck enerji t\u00fcketimi ile sonu\u00e7lan\u0131r.<\/p>\n<p>Ancak, FP16&#8217;n\u0131n baz\u0131 dezavantajlar\u0131 da vard\u0131r:<\/p>\n<p>*   <strong>Daha D\u00fc\u015f\u00fck Dinamik Aral\u0131k:<\/strong> FP16, FP32&#8217;ye g\u00f6re daha k\u00fc\u00e7\u00fck bir dinamik aral\u0131\u011fa sahiptir. Bu, \u00e7ok k\u00fc\u00e7\u00fck veya \u00e7ok b\u00fcy\u00fck de\u011ferlerin temsil edilmesinde zorluklara yol a\u00e7abilir. \u00d6zellikle gradyanlar, e\u011fitim s\u0131ras\u0131nda \u00e7ok k\u00fc\u00e7\u00fck hale gelebilir (underflow) ve s\u0131f\u0131ra yuvarlanabilir, bu da e\u011fitimin durmas\u0131na veya performans\u0131n d\u00fc\u015fmesine neden olabilir.<br \/>\n*   <strong>Daha D\u00fc\u015f\u00fck Hassasiyet:<\/strong> Baz\u0131 durumlarda, FP16&#8217;n\u0131n hassasiyet kayb\u0131 modelin do\u011frulu\u011funu olumsuz etkileyebilir.<\/p>\n<p>Kar\u0131\u015f\u0131k hassasiyet, bu dezavantajlar\u0131 en aza indirirken FP16&#8217;n\u0131n avantajlar\u0131ndan yararlanmay\u0131 ama\u00e7lar. Genellikle, a\u011f\u0131rl\u0131klar ve aktivasyonlar FP16 olarak saklan\u0131p i\u015flenirken, toplamalar ve gradyan hesaplamalar\u0131 gibi hassasiyet gerektiren operasyonlar FP32&#8217;de tutulur. Bu, hem h\u0131z hem de do\u011fruluk dengesini sa\u011flamaya yard\u0131mc\u0131 olur.<\/p>\n<h3>PyTorch&#8217;ta Otomatik Kar\u0131\u015f\u0131k Hassasiyet (AMP)<\/h3>\n<p>PyTorch&#8217;ta Otomatik Kar\u0131\u015f\u0131k Hassasiyet (AMP), kar\u0131\u015f\u0131k hassasiyet e\u011fitimini kolayla\u015ft\u0131rmak i\u00e7in tasarlanm\u0131\u015f bir \u00f6zelliktir. Manuel olarak hangi operasyonlar\u0131n hangi hassasiyette \u00e7al\u0131\u015faca\u011f\u0131na karar vermek yerine, PyTorch&#8217;un AMP mod\u00fcl\u00fc bunu otomatik olarak y\u00f6netir. AMP, CUDA cihazlar\u0131nda (NVIDIA GPU&#8217;lar) \u00e7al\u0131\u015f\u0131r ve <code>torch.cuda.amp<\/code> mod\u00fcl\u00fc arac\u0131l\u0131\u011f\u0131yla eri\u015filebilir.<\/p>\n<p>AMP&#8217;nin temel bile\u015fenleri \u015funlard\u0131r:<\/p>\n<p>1.  <strong><code>torch.cuda.amp.autocast<\/code> Konteyn\u0131r\u0131:<\/strong> Bu konteyn\u0131r, i\u00e7ine al\u0131nan kod bloklar\u0131ndaki operasyonlar\u0131n otomatik olarak do\u011fru veri tiplerinde (FP16 veya FP32) \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. <code>autocast<\/code> ba\u011flam\u0131 etkinle\u015ftirildi\u011finde, PyTorch hangi operasyonlar\u0131n FP16&#8217;ya d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilece\u011fini ak\u0131ll\u0131ca belirler. \u00d6rne\u011fin, matris \u00e7arp\u0131mlar\u0131 ve evri\u015fimler gibi hesaplama a\u00e7\u0131s\u0131ndan yo\u011fun operasyonlar FP16&#8217;ya d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilirken, hassasiyet gerektiren di\u011fer operasyonlar FP32&#8217;de kal\u0131r. Bu, <code>torch.autograd.autocast<\/code> olarak da bilinir ve FP32 ve FP16&#8217;n\u0131n yan\u0131 s\u0131ra bfloat16 gibi di\u011fer veri tiplerini de destekleyebilir.<\/p>\n<p>2.  <strong><code>torch.cuda.amp.GradScaler<\/code> S\u0131n\u0131f\u0131:<\/strong> FP16&#8217;n\u0131n s\u0131n\u0131rl\u0131 dinamik aral\u0131\u011f\u0131 nedeniyle gradyanlar \u00e7ok k\u00fc\u00e7\u00fck hale gelebilir (underflow). <code>GradScaler<\/code>, bu sorunu \u00e7\u00f6zmek i\u00e7in gradyanlar\u0131 e\u011fitimin belirli bir a\u015famas\u0131nda \u00f6l\u00e7eklendirir. \u00d6l\u00e7eklendirme, gradyanlar\u0131n FP16&#8217;n\u0131n temsil edebilece\u011fi aral\u0131\u011fa ta\u015f\u0131nmas\u0131na yard\u0131mc\u0131 olur. E\u011fitim tamamland\u0131ktan sonra, gradyanlar orijinal \u00f6l\u00e7eklerine geri \u00f6l\u00e7eklendirilir. Bu i\u015flem, <code>loss.backward()<\/code> \u00e7a\u011fr\u0131lmadan \u00f6nce gradyanlar\u0131n \u00f6l\u00e7eklenmesi ve <code>optimizer.step()<\/code> \u00e7a\u011fr\u0131ld\u0131ktan sonra \u00f6l\u00e7eklendirmenin kald\u0131r\u0131lmas\u0131 ad\u0131mlar\u0131n\u0131 i\u00e7erir.<\/p>\n<p>### AMP Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/p>\n<p>AMP&#8217;nin arkas\u0131ndaki temel mekanizma \u015f\u00f6yledir:<\/p>\n<p>*   <strong>Otomatik Veri Tipi Se\u00e7imi (<code>autocast<\/code>):<\/strong> <code>autocast<\/code> konteyn\u0131r\u0131 etkinle\u015ftirildi\u011finde, PyTorch belirli operasyonlar\u0131 (\u00f6rne\u011fin, <code>torch.nn.Linear<\/code>, <code>torch.nn.Conv2d<\/code>) otomatik olarak FP16&#8217;ya d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Bu d\u00f6n\u00fc\u015f\u00fcm, operasyonun giri\u015flerinin FP16&#8217;ya d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesini ve operasyonun FP16 tens\u00f6rleri \u00fczerinde \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 i\u00e7erir. Ancak, baz\u0131 operasyonlar (\u00f6rne\u011fin, baz\u0131 normalle\u015ftirme katmanlar\u0131 veya softmax gibi hassas \u00e7\u0131kt\u0131lar \u00fcreten operasyonlar) FP32&#8217;de tutulur. Bu, modelin do\u011frulu\u011funu korumaya yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Gradyan \u00d6l\u00e7eklendirme (<code>GradScaler<\/code>):<\/strong><br \/>\n    1.  <strong>\u00d6l\u00e7ekleme:<\/strong> <code>GradScaler<\/code>, <code>loss.backward()<\/code> \u00e7a\u011fr\u0131lmadan \u00f6nce kay\u0131p de\u011ferini b\u00fcy\u00fck bir fakt\u00f6rle \u00e7arpar. Bu, gradyanlar\u0131 da ayn\u0131 fakt\u00f6rle \u00f6l\u00e7ekler.<br \/>\n    2.  <strong>Geri Yay\u0131l\u0131m:<\/strong> \u00d6l\u00e7eklenmi\u015f kay\u0131p, normal geri yay\u0131l\u0131m s\u00fcrecinden ge\u00e7er. Bu i\u015flem, FP16&#8217;da saklanan a\u011f\u0131rl\u0131klar ve ara \u00e7\u0131kt\u0131larla ger\u00e7ekle\u015ftirilir, ancak gradyanlar FP32&#8217;de hesaplan\u0131r.<br \/>\n    3.  <strong>\u00d6l\u00e7eklendirme Kald\u0131rma:<\/strong> <code>optimizer.step()<\/code> \u00e7a\u011fr\u0131lmadan \u00f6nce, <code>GradScaler<\/code>, hesaplanan gradyanlar\u0131 orijinal \u00f6l\u00e7eklerine geri b\u00f6lerek \u00f6l\u00e7eklendirmeyi kald\u0131r\u0131r. Bu, gradyanlar\u0131n do\u011fru de\u011ferlere sahip olmas\u0131n\u0131 sa\u011flar.<br \/>\n    4.  <strong>Ta\u015fma Kontrol\u00fc:<\/strong> <code>GradScaler<\/code>, gradyanlarda bir ta\u015fma (overflow) olup olmad\u0131\u011f\u0131n\u0131 da kontrol eder. E\u011fer bir ta\u015fma tespit edilirse, bu ad\u0131m atlan\u0131r ve gradyanlar s\u0131f\u0131rlan\u0131r, b\u00f6ylece modelin g\u00fcncellenmesi engellenir. Bu, e\u011fitim s\u00fcrecinin kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<p>### AMP&#8217;nin Avantajlar\u0131<\/p>\n<p>PyTorch&#8217;ta AMP kullanman\u0131n ba\u015fl\u0131ca avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong>Performans Art\u0131\u015f\u0131:<\/strong> E\u011fitim s\u00fcrelerinde \u00f6nemli \u00f6l\u00e7\u00fcde azalma sa\u011flar. Donan\u0131m \u00f6zelliklerine ba\u011fl\u0131 olarak %1.5x ila %4x aras\u0131nda h\u0131z art\u0131\u015f\u0131 g\u00f6r\u00fclebilir.<br \/>\n*   <strong>Bellek Verimlili\u011fi:<\/strong> Daha az bellek kullan\u0131m\u0131, daha b\u00fcy\u00fck modellerin veya daha b\u00fcy\u00fck toplu i\u015f boyutlar\u0131n\u0131n kullan\u0131lmas\u0131na olanak tan\u0131r.<br \/>\n*   <strong>Basit Uygulama:<\/strong> <code>autocast<\/code> konteyn\u0131r\u0131 ve <code>GradScaler<\/code> s\u0131n\u0131f\u0131 sayesinde, mevcut bir PyTorch kodunu minimum de\u011fi\u015fiklikle AMP&#8217;ye uyarlamak m\u00fcmk\u00fcnd\u00fcr. Genellikle sadece birka\u00e7 sat\u0131r kod eklemek yeterlidir.<br \/>\n*   <strong>Do\u011fruluk Korunumu:<\/strong> <code>GradScaler<\/code> ve ak\u0131ll\u0131 veri tipi se\u00e7imi sayesinde, FP16&#8217;n\u0131n getirdi\u011fi hassasiyet ve dinamik aral\u0131k sorunlar\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde giderilir. \u00c7o\u011fu durumda, FP32 ile elde edilen do\u011fruluk seviyesi korunur.<\/p>\n<p>### PyTorch&#8217;ta AMP Uygulamas\u0131<\/p>\n<p>PyTorch&#8217;ta AMP&#8217;yi uygulamak olduk\u00e7a basittir. A\u015fa\u011f\u0131da, tipik bir e\u011fitim d\u00f6ng\u00fcs\u00fcnde AMP&#8217;nin nas\u0131l kullan\u0131laca\u011f\u0131na dair bir \u00f6rnek bulunmaktad\u0131r:<\/p>\n<pre><code class=\"language-python\">import torch\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torch.cuda.amp import autocast, GradScaler\n\n<h2>Modelinizi, kay\u0131p fonksiyonunuzu ve optimize edicinizi tan\u0131mlay\u0131n<\/h2>\nmodel = YourModel() # \u00d6rnek bir model s\u0131n\u0131f\u0131\ncriterion = nn.CrossEntropyLoss()\noptimizer = optim.Adam(model.parameters(), lr=0.001)\n\n<h2>GPU'ya ta\u015f\u0131y\u0131n (e\u011fer mevcutsa)<\/h2>\ndevice = torch.device(&quot;cuda&quot; if torch.cuda.is_available() else &quot;cpu&quot;)\nmodel.to(device)\n\n<h2>GradScaler'\u0131 ba\u015flat\u0131n<\/h2>\nscaler = GradScaler()\n\n<h2>E\u011fitim d\u00f6ng\u00fcs\u00fc<\/h2>\nnum_epochs = 10\nfor epoch in range(num_epochs):\n    model.train()\n    for inputs, targets in dataloader: # Dataloader'\u0131n\u0131z\n        inputs, targets = inputs.to(device), targets.to(device)\n\n        optimizer.zero_grad()\n\n        # autocast konteyn\u0131r\u0131 i\u00e7inde ileri ge\u00e7i\u015fi ger\u00e7ekle\u015ftirin\n        with autocast():\n            outputs = model(inputs)\n            loss = criterion(outputs, targets)\n\n        # GradScaler kullanarak geri yay\u0131l\u0131m\u0131 ger\u00e7ekle\u015ftirin\n        scaler.scale(loss).backward()\n\n        # Gradyanlar\u0131 \u00e7\u00f6z\u00fcn ve optimize ediciyi g\u00fcncelleyin\n        scaler.step(optimizer)\n\n        # \u00d6l\u00e7ekleyiciyi bir sonraki ad\u0131m i\u00e7in g\u00fcncelleyin\n        scaler.update()\n\n    print(f'Epoch {epoch+1}\/{num_epochs}, Loss: {loss.item():.4f}')\n\n<h2>Modelinizi kaydedin (iste\u011fe ba\u011fl\u0131)<\/h2>\ntorch.save(model.state_dict(), 'model_with_amp.pth')<\/code><\/pre>\n<p>Yukar\u0131daki kod \u00f6rne\u011finde dikkat edilmesi gereken noktalar \u015funlard\u0131r:<\/p>\n<p>*   <strong><code>scaler = GradScaler()<\/code>:<\/strong> Bir <code>GradScaler<\/code> nesnesi olu\u015fturulur. Bu nesne, gradyan \u00f6l\u00e7eklendirme i\u015flemini y\u00f6netecektir.<br \/>\n*   <strong><code>with autocast():<\/code>:<\/strong> \u0130leri ge\u00e7i\u015f (forward pass) ve kay\u0131p hesaplamas\u0131 <code>autocast<\/code> konteyn\u0131r\u0131 i\u00e7ine al\u0131n\u0131r. Bu, bu blok i\u00e7indeki uygun operasyonlar\u0131n otomatik olarak FP16&#8217;ya d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesini sa\u011flar.<br \/>\n*   <strong><code>scaler.scale(loss).backward()<\/code>:<\/strong> Geleneksel <code>loss.backward()<\/code> yerine <code>scaler.scale(loss).backward()<\/code> kullan\u0131l\u0131r. Bu, kayb\u0131 \u00f6l\u00e7ekler ve ard\u0131ndan \u00f6l\u00e7eklenmi\u015f kayb\u0131 kullanarak geri yay\u0131l\u0131m\u0131 ger\u00e7ekle\u015ftirir.<br \/>\n*   <strong><code>scaler.step(optimizer)<\/code>:<\/strong> Geleneksel <code>optimizer.step()<\/code> yerine <code>scaler.step(optimizer)<\/code> kullan\u0131l\u0131r. Bu, \u00f6l\u00e7eklenmi\u015f gradyanlar\u0131 kontrol eder, e\u011fer ta\u015fma yoksa gradyanlar\u0131n \u00f6l\u00e7eklendirmesini kald\u0131r\u0131r ve ard\u0131ndan optimize ediciyi kullanarak a\u011f\u0131rl\u0131klar\u0131 g\u00fcnceller.<br \/>\n*   <strong><code>scaler.update()<\/code>:<\/strong> <code>scaler.step()<\/code> \u00e7a\u011fr\u0131ld\u0131ktan sonra <code>scaler.update()<\/code> \u00e7a\u011fr\u0131l\u0131r. Bu, gradyanlardaki ta\u015fma durumuna g\u00f6re \u00f6l\u00e7ekleme fakt\u00f6r\u00fcn\u00fc ayarlar. E\u011fer bir ta\u015fma olmu\u015fsa, \u00f6l\u00e7ekleme fakt\u00f6r\u00fc azalt\u0131l\u0131r; e\u011fer ta\u015fma olmam\u0131\u015fsa, fakt\u00f6r art\u0131r\u0131labilir.<\/p>\n<p>### AMP ile \u0130lgili Dikkat Edilmesi Gerekenler ve \u0130pu\u00e7lar\u0131<\/p>\n<p>*   <strong>Donan\u0131m Uyumlulu\u011fu:<\/strong> AMP, CUDA \u00f6zellikli NVIDIA GPU&#8217;larda en iyi \u015fekilde \u00e7al\u0131\u015f\u0131r. \u00d6zellikle Tensor \u00c7ekirdekleri olan GPU&#8217;lar (Volta mimarisi ve sonras\u0131) \u00f6nemli performans art\u0131\u015flar\u0131 sunar.<br \/>\n*   <strong>Veri Tipleri:<\/strong> Varsay\u0131lan olarak AMP, FP16 ve FP32&#8217;yi kullan\u0131r. Ancak, <code>autocast<\/code> fonksiyonu, <code>dtype<\/code> arg\u00fcman\u0131 ile farkl\u0131 veri tiplerini destekleyebilir (\u00f6rne\u011fin, <code>torch.bfloat16<\/code>). bfloat16, \u00f6zellikle TPU&#8217;larda ve belirli NVIDIA GPU&#8217;larda daha iyi performans g\u00f6sterebilir.<br \/>\n*   <strong>Kay\u0131p Fonksiyonu:<\/strong> Baz\u0131 \u00f6zel kay\u0131p fonksiyonlar\u0131 i\u00e7in, gradyan hesaplamalar\u0131n\u0131n hassasiyetini korumak amac\u0131yla kay\u0131p fonksiyonunu FP32&#8217;de tutmak gerekebilir. Ancak, <code>autocast<\/code> genellikle bu durumu otomatik olarak y\u00f6netir. E\u011fer emin de\u011filseniz, kay\u0131p hesaplamas\u0131n\u0131 <code>autocast<\/code> blo\u011funun d\u0131\u015f\u0131nda tutabilirsiniz.<br \/>\n*   <strong>Model Mimarisi:<\/strong> \u00c7o\u011fu modern sinir a\u011f\u0131 mimarisi AMP ile uyumludur. Ancak, \u00e7ok nadir durumlarda, belirli katmanlar\u0131n veya operasyonlar\u0131n FP16&#8217;da say\u0131sal olarak karars\u0131z hale gelmesi s\u00f6z konusu olabilir. Bu t\u00fcr durumlar i\u00e7in, ilgili katmanlar\u0131 veya operasyonlar\u0131 FP32&#8217;de tutmak i\u00e7in <code>autocast<\/code> konteyn\u0131r\u0131n\u0131 daha dar bir alana uygulayabilir veya \u00f6zel olarak bu katmanlar i\u00e7in veri tipini manuel olarak ayarlayabilirsiniz.<br \/>\n*   <strong>Test Etme:<\/strong> Her zaman oldu\u011fu gibi, AMP&#8217;yi kullan\u0131rken modelinizin do\u011frulu\u011funu dikkatlice test edin. \u00c7o\u011fu durumda, do\u011frulukta \u00f6nemli bir d\u00fc\u015f\u00fc\u015f olmaz, ancak nadir de olsa baz\u0131 modellerde k\u00fc\u00e7\u00fck de\u011fi\u015fiklikler g\u00f6zlemlenebilir.<br \/>\n*   <strong>Optimizasyon Ayarlar\u0131:<\/strong> <code>GradScaler<\/code>&#8216;\u0131n varsay\u0131lan ayarlar\u0131 genellikle iyi sonu\u00e7 verir. Ancak, \u00e7ok karars\u0131z e\u011fitim durumlar\u0131nda <code>init_scale<\/code> parametresini ayarlamak veya <code>growth_interval<\/code> gibi parametreleri de\u011fi\u015ftirmek faydal\u0131 olabilir.<br \/>\n*   <strong>Da\u011f\u0131t\u0131lm\u0131\u015f E\u011fitim (Distributed Training):<\/strong> AMP, <code>torch.nn.parallel.DistributedDataParallel<\/code> gibi da\u011f\u0131t\u0131lm\u0131\u015f e\u011fitim stratejileriyle sorunsuz bir \u015fekilde \u00e7al\u0131\u015f\u0131r.<\/p>\n<p>### AMP&#8217;nin Geli\u015fimi ve Gelece\u011fi<\/p>\n<p>PyTorch&#8217;ta AMP, s\u00fcrekli olarak geli\u015ftirilmektedir. Yeni donan\u0131m \u00f6zelliklerinin deste\u011fi, performans optimizasyonlar\u0131 ve kullan\u0131m kolayl\u0131\u011f\u0131 \u00fczerine \u00e7al\u0131\u015fmalar devam etmektedir. PyTorch&#8217;un gelecekteki s\u00fcr\u00fcmlerinde, AMP&#8217;nin daha da entegre hale gelmesi ve daha geni\u015f bir donan\u0131m yelpazesinde daha iyi performans sunmas\u0131 beklenmektedir. Ayr\u0131ca, bfloat16 gibi yeni veri tiplerinin deste\u011fi ve bu veri tiplerinin kullan\u0131m\u0131n\u0131 daha da kolayla\u015ft\u0131ran ara\u00e7lar geli\u015ftirilmektedir.<\/p>\n<p>TensorRT gibi \u00e7\u0131kar\u0131m (inference) optimizasyon ara\u00e7lar\u0131 da kar\u0131\u015f\u0131k hassasiyetten faydalan\u0131r. E\u011fitimde elde edilen AMP&#8217;nin faydalar\u0131, \u00e7\u0131kar\u0131m a\u015famas\u0131nda da modelin daha h\u0131zl\u0131 ve daha az bellek kullanarak \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilir.<\/p>\n<p>### Sonu\u00e7<\/p>\n<p>PyTorch&#8217;ta Otomatik Kar\u0131\u015f\u0131k Hassasiyet (AMP), derin \u00f6\u011frenme modellerinin e\u011fitimini h\u0131zland\u0131rmak ve bellek kullan\u0131m\u0131n\u0131 optimize etmek i\u00e7in g\u00fc\u00e7l\u00fc ve kullan\u0131m\u0131 kolay bir ara\u00e7t\u0131r. <code>torch.cuda.amp.autocast<\/code> ve <code>torch.cuda.amp.GradScaler<\/code> s\u0131n\u0131flar\u0131 sayesinde, geli\u015ftiriciler karma\u015f\u0131k manuel hassasiyet y\u00f6netimiyle u\u011fra\u015fmak zorunda kalmadan bu teknikten yararlanabilirler. AMP, modern derin \u00f6\u011frenme i\u015f ak\u0131\u015flar\u0131nda performans\u0131 art\u0131rmak ve daha b\u00fcy\u00fck modellerle daha verimli \u00e7al\u0131\u015fmak i\u00e7in vazge\u00e7ilmez bir \u00f6zellik haline gelmi\u015ftir. Uygulamas\u0131 nispeten basittir ve \u00e7o\u011fu durumda modelin do\u011frulu\u011funu korurken \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131z kazan\u0131m\u0131 sa\u011flar. Bu nedenle, GPU tabanl\u0131 derin \u00f6\u011frenme projelerinde AMP&#8217;nin kullan\u0131lmas\u0131 \u015fiddetle tavsiye edilir.<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/pytorch-automatic-mixed-precision\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/pytorch-automatic-mixed-precision<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision &#8211; AMP) Derin \u00f6\u011frenme modellerinin e\u011fitimi, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleri ve karma\u015f\u0131k mimarilerle u\u011fra\u015f\u0131rken, \u00f6nemli hesaplama kaynaklar\u0131 gerektirir.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-42139","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision - AMP) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision - AMP)\" \/>\n<meta property=\"og:description\" content=\"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision - AMP) Derin \u00f6\u011frenme modellerinin e\u011fitimi, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleri ve karma\u015f\u0131k mimarilerle u\u011fra\u015f\u0131rken, \u00f6nemli hesaplama kaynaklar\u0131 gerektirir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-28T14:00:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-28T14:01:07+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision &#8211; AMP)\",\"datePublished\":\"2026-05-28T14:00:33+00:00\",\"dateModified\":\"2026-05-28T14:01:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/\"},\"wordCount\":1862,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/\",\"name\":\"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision - AMP) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-28T14:00:33+00:00\",\"dateModified\":\"2026-05-28T14:01:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision &#8211; AMP)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision - AMP) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/","og_locale":"tr_TR","og_type":"article","og_title":"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision - AMP)","og_description":"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision - AMP) Derin \u00f6\u011frenme modellerinin e\u011fitimi, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleri ve karma\u015f\u0131k mimarilerle u\u011fra\u015f\u0131rken, \u00f6nemli hesaplama kaynaklar\u0131 gerektirir.","og_url":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-28T14:00:33+00:00","article_modified_time":"2026-05-28T14:01:07+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"11 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision &#8211; AMP)","datePublished":"2026-05-28T14:00:33+00:00","dateModified":"2026-05-28T14:01:07+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/"},"wordCount":1862,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/","url":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/","name":"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision - AMP) - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-28T14:00:33+00:00","dateModified":"2026-05-28T14:01:07+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/pytorch-ile-otomatik-karisik-hassasiyet-automatic-mixed-precision-amp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PyTorch ile Otomatik Kar\u0131\u015f\u0131k Hassasiyet (Automatic Mixed Precision &#8211; AMP)"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=42139"}],"version-history":[{"count":2,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42139\/revisions"}],"predecessor-version":[{"id":42141,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42139\/revisions\/42141"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=42139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=42139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=42139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}