Buckets:

download
raw
40.8 kB
<meta charset="utf-8" /><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;Transformer’lar nasıl çalışır?&quot;,&quot;local&quot;:&quot;how-do-transformers-work&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Biraz Transformer tarihi&quot;,&quot;local&quot;:&quot;a-bit-of-transformer-history&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Transformer’lar dil modelidir&quot;,&quot;local&quot;:&quot;transformers-are-language-models&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Transformer’lar büyük modellerdir&quot;,&quot;local&quot;:&quot;transformers-are-big-models&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Transfer öğrenme&quot;,&quot;local&quot;:&quot;transfer-learning&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Genel Transformer mimarisi&quot;,&quot;local&quot;:&quot;general-transformer-architecture&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Dikkat katmanları&quot;,&quot;local&quot;:&quot;attention-layers&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Özgün mimari&quot;,&quot;local&quot;:&quot;the-original-architecture&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Mimariler ve checkpoint’ler&quot;,&quot;local&quot;:&quot;architecture-vs-checkpoints&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2}],&quot;depth&quot;:1}"/>
<link href="/docs/course/pr_1358/tr/_app/immutable/entry/start.BIgaKcat.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/CgB2CCkd.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/DJskd5au.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/entry/app.BozjfrCo.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/Ct6K-6wQ.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/CVMPkXHl.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/C8-lBXjT.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/DsnmJJEf.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/nodes/0.DOV123e1.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/CX3ddkTh.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/nodes/8.nuvT_-hC.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/DNJujO0f.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/Dx-3NVqU.js" rel="modulepreload">
<link href="/docs/course/pr_1358/tr/_app/immutable/chunks/yKNaxbAs.js" rel="modulepreload">
<!--13h9kzw--><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;Transformer’lar nasıl çalışır?&quot;,&quot;local&quot;:&quot;how-do-transformers-work&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Biraz Transformer tarihi&quot;,&quot;local&quot;:&quot;a-bit-of-transformer-history&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Transformer’lar dil modelidir&quot;,&quot;local&quot;:&quot;transformers-are-language-models&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Transformer’lar büyük modellerdir&quot;,&quot;local&quot;:&quot;transformers-are-big-models&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Transfer öğrenme&quot;,&quot;local&quot;:&quot;transfer-learning&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Genel Transformer mimarisi&quot;,&quot;local&quot;:&quot;general-transformer-architecture&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Dikkat katmanları&quot;,&quot;local&quot;:&quot;attention-layers&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Özgün mimari&quot;,&quot;local&quot;:&quot;the-original-architecture&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Mimariler ve checkpoint’ler&quot;,&quot;local&quot;:&quot;architecture-vs-checkpoints&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2}],&quot;depth&quot;:1}"/><!---->
<link href="/docs/course/pr_1358/tr/_app/immutable/assets/0.tn0RQdqM.css" rel="modulepreload"> <!--[--><!--[0--><!--[--><!--[0--><!--[--><p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"><div class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----></span> <span>Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg><!----></button></div> <!--[-1--><!--]--></div><!----> <!--[0--><h1 class="relative group"><a id="how-do-transformers-work" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#how-do-transformers-work"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Transformer’lar nasıl çalışır?</span></h1><!--]--><!----> <div class="flex space-x-1 absolute z-10 right-0 top-0"><a href="https://discuss.huggingface.co/t/chapter-1-questions" target="_blank"><img alt="Ask a Question" class="!m-0" src="https://img.shields.io/badge/Ask%20a%20question-ffcb4c.svg?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTEgMTA0IDEwNiI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMyMzFmMjA7fS5jbHMtMntmaWxsOiNmZmY5YWU7fS5jbHMtM3tmaWxsOiMwMGFlZWY7fS5jbHMtNHtmaWxsOiMwMGE5NGY7fS5jbHMtNXtmaWxsOiNmMTVkMjI7fS5jbHMtNntmaWxsOiNlMzFiMjM7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5EaXNjb3Vyc2VfbG9nbzwvdGl0bGU+PGcgaWQ9IkxheWVyXzIiPjxnIGlkPSJMYXllcl8zIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01MS44NywwQzIzLjcxLDAsMCwyMi44MywwLDUxYzAsLjkxLDAsNTIuODEsMCw1Mi44MWw1MS44Ni0uMDVjMjguMTYsMCw1MS0yMy43MSw1MS01MS44N1M4MCwwLDUxLjg3LDBaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTIuMzcsMTkuNzRBMzEuNjIsMzEuNjIsMCwwLDAsMjQuNTgsNjYuNDFsLTUuNzIsMTguNEwzOS40LDgwLjE3YTMxLjYxLDMxLjYxLDAsMSwwLDEzLTYwLjQzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTc3LjQ1LDMyLjEyYTMxLjYsMzEuNiwwLDAsMS0zOC4wNSw0OEwxOC44Niw4NC44MmwyMC45MS0yLjQ3QTMxLjYsMzEuNiwwLDAsMCw3Ny40NSwzMi4xMloiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik03MS42MywyNi4yOUEzMS42LDMxLjYsMCwwLDEsMzguOCw3OEwxOC44Niw4NC44MiwzOS40LDgwLjE3QTMxLjYsMzEuNiwwLDAsMCw3MS42MywyNi4yOVoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yNi40Nyw2Ny4xMWEzMS42MSwzMS42MSwwLDAsMSw1MS0zNUEzMS42MSwzMS42MSwwLDAsMCwyNC41OCw2Ni40MWwtNS43MiwxOC40WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTI0LjU4LDY2LjQxQTMxLjYxLDMxLjYxLDAsMCwxLDcxLjYzLDI2LjI5YTMxLjYxLDMxLjYxLDAsMCwwLTQ5LDM5LjYzbC0zLjc2LDE4LjlaIi8+PC9nPjwvZz48L3N2Zz4="/></a><!----> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!----> <p>Bu kısımda Transformer modellerinin mimarisine göz atacak; dikkat, kodlayıcı-kod çözücü mimarisi ve diğer kavramları daha derinlemesine inceleyeceğiz.</p> <blockquote class="warning"><p>🚀 Burada işi bir üst seviyeye taşıyoruz. Bu kısım ayrıntılı ve teknik; her şeyi hemen anlamazsanız endişelenmeyin. Bu kavramlara kursun ilerleyen bölümlerinde yeniden döneceğiz.</p></blockquote> <!--[1--><h2 class="relative group"><a id="a-bit-of-transformer-history" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#a-bit-of-transformer-history"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Biraz Transformer tarihi</span></h2><!--]--><!----> <p>Transformer modellerinin (kısa) tarihindeki bazı önemli dönüm noktaları:</p> <div class="flex justify-center"><img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_chrono.svg" alt="Transformer modellerinin kısa bir kronolojisi."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_chrono-dark.svg" alt="Transformer modellerinin kısa bir kronolojisi."/></div> <p><a href="https://arxiv.org/abs/1706.03762" rel="nofollow">Transformer mimarisi</a> Haziran 2017’de tanıtıldı. Özgün araştırmanın odağı çeviri görevleriydi. Ardından aralarında şunların da bulunduğu birkaç etkili model tanıtıldı:</p> <ul><li><p><strong>Haziran 2018</strong>: <a href="https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf" rel="nofollow">GPT</a>, çeşitli NLP görevlerinde ince ayar için kullanılan ve alanındaki en iyi sonuçları elde eden ilk önceden eğitilmiş Transformer modeli</p></li> <li><p><strong>Ekim 2018</strong>: <a href="https://arxiv.org/abs/1810.04805" rel="nofollow">BERT</a>, cümlelerin daha iyi özetlerini (temsillerini) üretmek için tasarlanmış bir başka büyük önceden eğitilmiş model (sonraki bölümde bu konuya daha ayrıntılı değineceğiz!)</p></li> <li><p><strong>Şubat 2019</strong>: <a href="https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf" rel="nofollow">GPT-2</a>, GPT’nin geliştirilmiş (ve daha büyük) bir sürümü; etik kaygılar nedeniyle hemen kamuya açılmadı</p></li> <li><p><strong>Ekim 2019</strong>: <a href="https://huggingface.co/papers/1910.10683" rel="nofollow">T5</a>, diziden diziye Transformer mimarisinin çoklu göreve odaklanan bir uygulaması.</p></li> <li><p><strong>Mayıs 2020</strong>: <a href="https://huggingface.co/papers/2005.14165" rel="nofollow">GPT-3</a>, GPT-2’nin daha da büyük bir sürümü; ince ayara gerek kalmadan çeşitli görevlerde iyi sonuç verebiliyor (buna <em>sıfır atışlı öğrenme</em> (zero-shot learning) denir)</p></li> <li><p><strong>Ocak 2022</strong>: <a href="https://huggingface.co/papers/2203.02155" rel="nofollow">InstructGPT</a>, talimatları daha iyi izlemek üzere eğitilmiş bir GPT-3 sürümü.</p></li> <li><p><strong>Ocak 2023</strong>: <a href="https://huggingface.co/papers/2302.13971" rel="nofollow">Llama</a>, çeşitli dillerde metin üretebilen bir büyük dil modeli.</p></li> <li><p><strong>Mart 2023</strong>: <a href="https://huggingface.co/papers/2310.06825" rel="nofollow">Mistral</a>, değerlendirilen bütün kıyaslamalarda Llama 2 13B’yi geride bırakan 7 milyar parametreli bir dil modeli. Daha hızlı çıkarım için gruplanmış sorgu dikkatinden (grouped-query attention), istenen uzunluktaki dizileri işlemek için de kayan pencereli dikkatten (sliding window attention) yararlanır.</p></li> <li><p><strong>Mayıs 2024</strong>: <a href="https://huggingface.co/papers/2408.00118" rel="nofollow">Gemma 2</a>, 2B ile 27B parametre arasında değişen, hafif ve alanındaki en iyi açık modellerden oluşan bir aile. Dönüşümlü yerel-küresel dikkat ve gruplanmış sorgu dikkati kullanır; küçük modelleri bilgi damıtma (knowledge distillation) ile eğitilmiştir ve 2-3 kat büyük modellerle yarışabilecek performans sunar.</p></li> <li><p><strong>Kasım 2024</strong>: <a href="https://huggingface.co/papers/2502.02737" rel="nofollow">SmolLM2</a>, alanındaki en iyi küçük dil modellerinden biri (135 milyon ile 1,7 milyar parametre arası). Kompakt boyutuna rağmen etkileyici bir performans sergiler ve mobil cihazlar ile uç cihazlar için yeni olanakların kapısını açar.</p></li></ul> <p>Bu liste kapsamlı olmaktan çok uzaktır; yalnızca farklı Transformer modeli türlerinden birkaçını öne çıkarmayı amaçlıyor. Kabaca üç kategoriye ayrılabilirler:</p> <ul><li>GPT benzeri (<em>özbağlanımlı</em> (auto-regressive) Transformer modelleri de denir)</li> <li>BERT benzeri (<em>otokodlayıcı</em> (auto-encoding) Transformer modelleri de denir)</li> <li>T5 benzeri (<em>diziden diziye</em> (sequence-to-sequence) Transformer modelleri de denir)</li></ul> <p>Bu ailelere ileride daha ayrıntılı gireceğiz.</p> <!--[1--><h2 class="relative group"><a id="transformers-are-language-models" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#transformers-are-language-models"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Transformer’lar dil modelidir</span></h2><!--]--><!----> <p>Yukarıda adı geçen bütün Transformer modelleri (GPT, BERT, T5 vb.) <em>dil modeli</em> olarak eğitildi. Yani büyük miktarda ham metin üzerinde öz-denetimli (self-supervised) bir şekilde eğitildiler.</p> <p>Öz-denetimli öğrenme, hedefin modelin girdilerinden otomatik olarak hesaplandığı bir eğitim türüdür. Bu da verileri etiketlemek için insana ihtiyaç olmadığı anlamına gelir!</p> <p>Bu tür bir model, üzerinde eğitildiği dili istatistiksel olarak kavrar; ama belirli pratik görevlerde pek işe yaramaz. Bu yüzden genel amaçlı önceden eğitilmiş model daha sonra <em>transfer öğrenme</em> ya da <em>ince ayar</em> (fine-tuning) denen bir süreçten geçer. Bu süreçte model, belirli bir görev üzerinde denetimli bir şekilde, yani insanların etiketlediği etiketlerle ince ayardan geçirilir.</p> <p>Görevlere bir örnek, önceki <em>n</em> sözcüğü okuduktan sonra cümledeki sonraki sözcüğü tahmin etmektir. Buna <em>nedensel dil modelleme</em> denir; çünkü çıktı geçmiş ve şimdiki girdilere bağlıdır, gelecektekilere bağlı değildir.</p> <div class="flex justify-center"><img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/causal_modeling.svg" alt="Bir cümledeki sonraki sözcüğün tahmin edildiği nedensel dil modelleme örneği."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/causal_modeling-dark.svg" alt="Bir cümledeki sonraki sözcüğün tahmin edildiği nedensel dil modelleme örneği."/></div> <p>Bir başka örnek de modelin cümledeki maskelenmiş bir sözcüğü tahmin ettiği <em>maskeli dil modelleme</em>dir.</p> <div class="flex justify-center"><img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/masked_modeling.svg" alt="Bir cümledeki maskelenmiş sözcüğün tahmin edildiği maskeli dil modelleme örneği."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/masked_modeling-dark.svg" alt="Bir cümledeki maskelenmiş sözcüğün tahmin edildiği maskeli dil modelleme örneği."/></div> <!--[1--><h2 class="relative group"><a id="transformers-are-big-models" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#transformers-are-big-models"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Transformer’lar büyük modellerdir</span></h2><!--]--><!----> <p>Birkaç istisna (DistilBERT gibi) dışında, daha iyi performans elde etmenin genel stratejisi modellerin boyutunu ve ön eğitimde kullanılan veri miktarını artırmaktır.</p> <div class="flex justify-center"><img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/model_parameters.png" alt="Yakın tarihli Transformer modellerinin parametre sayıları" width="90%"/></div> <p>Ne yazık ki bir modeli, özellikle de büyük bir modeli eğitmek büyük miktarda veri gerektirir. Bu, zaman ve hesaplama kaynakları açısından çok maliyetli hâle gelir. Aşağıdaki grafikte görülebileceği gibi, bunun çevresel bir etkisi bile vardır.</p> <div class="flex justify-center"><img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/carbon_footprint.svg" alt="Bir büyük dil modelinin karbon ayak izi."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/carbon_footprint-dark.svg" alt="Bir büyük dil modelinin karbon ayak izi."/></div> <iframe class="w-full xl:w-4/6 h-80" src="https://www.youtube-nocookie.com/embed/ftWlj4FBHTg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><!----> <p>Üstelik bu grafik, ön eğitimin çevresel etkisini azaltmaya bilinçli olarak çalışan bir ekibin yürüttüğü (çok büyük) bir model projesini gösteriyor. En iyi hiperparametreleri bulmak için çok sayıda deneme yapmanın ayak izi bundan da yüksek olurdu.</p> <p>Bir araştırma ekibinin, bir öğrenci topluluğunun ya da bir şirketin her model eğitmek istediğinde bunu sıfırdan yaptığını düşünün. Bu, küresel ölçekte devasa ve gereksiz maliyetlere yol açardı!</p> <p>Dil modellerini paylaşmanın bu kadar önemli olmasının nedeni budur: Eğitilmiş ağırlıkları paylaşmak ve zaten eğitilmiş ağırlıkların üzerine inşa etmek, topluluğun toplam hesaplama maliyetini ve karbon ayak izini azaltır.</p> <p>Bu arada, modellerinizin eğitiminin karbon ayak izini çeşitli araçlarla değerlendirebilirsiniz. Örneğin <a href="https://mlco2.github.io/impact/" rel="nofollow">ML CO2 Impact</a> ya da 🤗 Transformers’a entegre edilmiş olan <a href="https://codecarbon.io/" rel="nofollow">Code Carbon</a>. Bu konuda daha fazla bilgi edinmek için, eğitiminizin ayak izinin tahminini içeren bir <code>emissions.csv</code> dosyasını nasıl üreteceğinizi gösteren bu <a href="https://huggingface.co/blog/carbon-emissions-on-the-hub" rel="nofollow">blog yazısını</a> ve 🤗 Transformers’ın bu konudaki <a href="https://huggingface.co/docs/hub/model-cards-co2" rel="nofollow">belgelerini</a> okuyabilirsiniz.</p> <!--[1--><h2 class="relative group"><a id="transfer-learning" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#transfer-learning"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Transfer öğrenme</span></h2><!--]--><!----> <iframe class="w-full xl:w-4/6 h-80" src="https://www.youtube-nocookie.com/embed/BqqfQnyjmgg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><!----> <p><em>Ön eğitim</em> (pretraining), bir modeli sıfırdan eğitmektir: Ağırlıklar rastgele başlatılır ve eğitim hiçbir ön bilgi olmadan başlar.</p> <div class="flex justify-center"><img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/pretraining.svg" alt="Bir dil modelinin ön eğitimi hem zaman hem para açısından maliyetlidir."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/pretraining-dark.svg" alt="Bir dil modelinin ön eğitimi hem zaman hem para açısından maliyetlidir."/></div> <p>Bu ön eğitim genellikle çok büyük miktarda veri üzerinde yapılır. Dolayısıyla çok büyük bir veri derlemi (corpus) gerektirir ve eğitim birkaç haftaya kadar sürebilir.</p> <p><em>İnce ayar</em> ise bir model önceden eğitildikten <strong>sonra</strong> yapılan eğitimdir. İnce ayar yapmak için önce önceden eğitilmiş bir dil modeli edinir, ardından görevinize özgü bir veri kümesiyle ek eğitim yaparsınız. Bir dakika: Neden modeli baştan (<strong>sıfırdan</strong>) doğrudan nihai kullanım senaryonuz için eğitmiyoruz? Bunun birkaç nedeni var:</p> <ul><li>Önceden eğitilmiş model, ince ayar veri kümesiyle bazı benzerlikler taşıyan bir veri kümesi üzerinde zaten eğitildi. Bu sayede ince ayar süreci, ilk modelin ön eğitim sırasında edindiği bilgiden yararlanabilir (örneğin NLP sorunlarında önceden eğitilmiş model, görevinizde kullandığınız dili bir ölçüde istatistiksel olarak kavramış olur).</li> <li>Önceden eğitilmiş model zaten çok fazla veri üzerinde eğitildiği için, ince ayarın makul sonuçlar vermesi için çok daha az veri gerekir.</li> <li>Aynı nedenle, iyi sonuç almak için gereken zaman ve kaynak miktarı da çok daha düşüktür.</li></ul> <p>Örneğin İngilizce üzerinde eğitilmiş, önceden eğitilmiş bir modelden yararlanıp ona bir arXiv derlemi üzerinde ince ayar yaparak bilim/araştırma odaklı bir model elde edebilirsiniz. İnce ayar yalnızca sınırlı miktarda veri gerektirir: Önceden eğitilmiş modelin edindiği bilgi “aktarılır”; <em>transfer öğrenme</em> adı da buradan gelir.</p> <div class="flex justify-center"><img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/finetuning.svg" alt="Bir dil modeline ince ayar yapmak, hem zaman hem para açısından ön eğitimden daha ucuzdur."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/finetuning-dark.svg" alt="Bir dil modeline ince ayar yapmak, hem zaman hem para açısından ön eğitimden daha ucuzdur."/></div> <p>Dolayısıyla bir modele ince ayar yapmanın zaman, veri, para ve çevre açısından maliyeti daha düşüktür. Eğitim, tam bir ön eğitime göre daha az kısıtlayıcı olduğu için farklı ince ayar düzenlerini denemek de daha hızlı ve kolaydır.</p> <p>Bu süreç, sıfırdan eğitime göre (çok fazla veriniz olmadığı sürece) daha iyi sonuçlar da verir. Bu yüzden her zaman önceden eğitilmiş bir modelden (elinizdeki göreve olabildiğince yakın olanından) yararlanmaya ve ona ince ayar yapmaya çalışmalısınız.</p> <!--[1--><h2 class="relative group"><a id="general-transformer-architecture" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#general-transformer-architecture"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Genel Transformer mimarisi</span></h2><!--]--><!----> <p>Bu kısımda Transformer modelinin genel mimarisini gözden geçireceğiz. Bazı kavramları anlamazsanız endişelenmeyin; ileride her bileşeni ayrıntılı olarak ele alan kısımlar var.</p> <iframe class="w-full xl:w-4/6 h-80" src="https://www.youtube-nocookie.com/embed/H39Z_720T5s" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><!----> <p>Model temelde iki bloktan oluşur:</p> <ul><li><strong>Kodlayıcı (solda)</strong>: Kodlayıcı bir girdi alır ve bu girdinin bir temsilini (özelliklerini) oluşturur. Yani model, girdiden anlam çıkarmak üzere optimize edilmiştir.</li> <li><strong>Kod çözücü (sağda)</strong>: Kod çözücü, kodlayıcının temsilini (özelliklerini) başka girdilerle birlikte kullanarak bir hedef dizi üretir. Yani model, çıktı üretmek üzere optimize edilmiştir.</li></ul> <div class="flex justify-center"><img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_blocks.svg" alt="Bir Transformer modelinin mimarisi"/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers_blocks-dark.svg" alt="Bir Transformer modelinin mimarisi"/></div> <p>Bu parçaların her biri, göreve bağlı olarak tek başına kullanılabilir:</p> <ul><li><strong>Yalnız kodlayıcılı modeller</strong>: Cümle sınıflandırma ve adlandırılmış varlık tanıma gibi girdiyi anlamayı gerektiren görevler için uygundur.</li> <li><strong>Yalnız kod çözücülü modeller</strong>: Metin üretme gibi üretken görevler için uygundur.</li> <li><strong>Kodlayıcı-kod çözücü modeller</strong> ya da <strong>diziden diziye modeller</strong>: Çeviri ya da özetleme gibi bir girdi gerektiren üretken görevler için uygundur.</li></ul> <p>Bu mimarileri ilerleyen kısımlarda ayrı ayrı inceleyeceğiz.</p> <!--[1--><h2 class="relative group"><a id="attention-layers" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#attention-layers"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Dikkat katmanları</span></h2><!--]--><!----> <p>Transformer modellerinin temel özelliklerinden biri, <em>dikkat katmanları</em> denen özel katmanlarla kurulmuş olmalarıdır. Hatta Transformer mimarisini tanıtan makalenin başlığı <a href="https://arxiv.org/abs/1706.03762" rel="nofollow">“Attention Is All You Need”</a> (Tek ihtiyacınız dikkat) idi! Dikkat katmanlarının ayrıntılarını kursun ilerleyen bölümlerinde inceleyeceğiz. Şimdilik bilmeniz gereken tek şey şu: Bu katman, modele her sözcüğün temsilini oluştururken, verdiğiniz cümledeki belirli sözcüklere özellikle dikkat etmesini (ve diğerlerini aşağı yukarı göz ardı etmesini) söyler.</p> <p>Bunu somutlaştırmak için İngilizceden Fransızcaya metin çevirme görevini düşünün. “You like this course” girdisi verildiğinde, bir çeviri modelinin “like” sözcüğünü doğru çevirebilmesi için yanındaki “You” sözcüğüne de dikkat etmesi gerekir; çünkü Fransızcada “like” fiili özneye göre farklı çekimlenir. Cümlenin geri kalanı ise bu sözcüğün çevirisi için işe yaramaz. Benzer şekilde, “this” sözcüğünü çevirirken modelin “course” sözcüğüne de dikkat etmesi gerekir; çünkü “this”, ilişkili olduğu ismin eril ya da dişil olmasına göre farklı çevrilir. Yine cümledeki diğer sözcükler “course” sözcüğünün çevirisi için önem taşımaz. Daha karmaşık cümlelerde (ve daha karmaşık dil bilgisi kurallarında) modelin her sözcüğü doğru çevirebilmesi için cümlede daha uzakta yer alabilecek sözcüklere özellikle dikkat etmesi gerekir.</p> <p>Aynı kavram doğal dille ilgili her görev için geçerlidir: Bir sözcüğün kendi başına bir anlamı vardır, ama bu anlam bağlamdan derinden etkilenir. Bağlam da incelenen sözcükten önce ya da sonra gelen herhangi bir başka sözcük (ya da sözcükler) olabilir.</p> <p>Dikkat katmanlarının ne işe yaradığına dair bir fikriniz olduğuna göre, Transformer mimarisine daha yakından bakalım.</p> <!--[1--><h2 class="relative group"><a id="the-original-architecture" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#the-original-architecture"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Özgün mimari</span></h2><!--]--><!----> <p>Transformer mimarisi başlangıçta çeviri için tasarlandı. Eğitim sırasında kodlayıcı belirli bir dildeki girdileri (cümleleri) alırken, kod çözücü aynı cümleleri istenen hedef dilde alır. Kodlayıcıda dikkat katmanları cümledeki bütün sözcükleri kullanabilir (az önce gördüğümüz gibi, bir sözcüğün çevirisi cümlede ondan önce gelenlere olduğu kadar sonra gelenlere de bağlı olabilir). Kod çözücü ise sırayla çalışır ve cümlede yalnızca zaten çevirdiği sözcüklere (yani yalnızca o anda üretilmekte olan sözcükten önceki sözcüklere) dikkat edebilir. Örneğin çevrilmiş hedefin ilk üç sözcüğünü tahmin ettiğimizde bunları kod çözücüye veririz; kod çözücü de kodlayıcının bütün girdilerini kullanarak dördüncü sözcüğü tahmin etmeye çalışır.</p> <p>Eğitim sırasında (model hedef cümlelere erişebildiğinde) işleri hızlandırmak için kod çözücüye hedefin tamamı verilir, ancak gelecekteki sözcükleri kullanmasına izin verilmez (2. konumdaki sözcüğü tahmin etmeye çalışırken 2. konumdaki sözcüğe erişebilseydi sorun pek de zor olmazdı!). Örneğin dördüncü sözcüğü tahmin etmeye çalışırken dikkat katmanı yalnızca 1–3. konumlardaki sözcüklere erişebilir.</p> <p>Özgün Transformer mimarisi, kodlayıcı solda ve kod çözücü sağda olacak şekilde şöyle görünüyordu:</p> <div class="flex justify-center"><img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers.svg" alt="Bir Transformer modelinin mimarisi"/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter1/transformers-dark.svg" alt="Bir Transformer modelinin mimarisi"/></div> <p>Bir kod çözücü bloğundaki ilk dikkat katmanının kod çözücüye verilen bütün (geçmiş) girdilere dikkat ettiğine, ikinci dikkat katmanının ise kodlayıcının çıktısını kullandığına dikkat edin. Böylece o anki sözcüğü en iyi şekilde tahmin etmek için girdi cümlesinin tamamına erişebilir. Bu çok faydalıdır; çünkü farklı dillerin sözcükleri farklı sıralara koyan dil bilgisi kuralları olabilir ya da cümlede daha sonra gelen bir bağlam, belirli bir sözcüğün en iyi çevirisini belirlemeye yardımcı olabilir.</p> <p><em>Dikkat maskesi</em> de kodlayıcıda/kod çözücüde modelin bazı özel sözcüklere dikkat etmesini önlemek için kullanılabilir. Örneğin cümleler bir araya getirilip yığınlandığında bütün girdileri aynı uzunluğa getirmek için kullanılan özel dolgu sözcüğüne.</p> <!--[1--><h2 class="relative group"><a id="architecture-vs-checkpoints" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#architecture-vs-checkpoints"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span>Mimariler ve checkpoint’ler</span></h2><!--]--><!----> <p>Bu kursta Transformer modellerine daldıkça <em>modellerin</em> yanı sıra <em>mimarilerden</em> ve <em>checkpoint’lerden</em> de söz edildiğini göreceksiniz. Bu terimlerin anlamları birbirinden biraz farklıdır:</p> <ul><li><strong>Mimari</strong>: Modelin iskeletidir; modelin içindeki her katmanın ve her işlemin tanımıdır.</li> <li><strong>Checkpoint’ler</strong>: Belirli bir mimariye yüklenecek ağırlıklardır.</li> <li><strong>Model</strong>: “Mimari” ya da “checkpoint” kadar kesin olmayan bir şemsiye terimdir; ikisi de kastedilebilir. Bu kurs, belirsizliği azaltmak için önemli olduğu yerlerde <em>mimari</em> ya da <em>checkpoint</em> diye belirtecek.</li></ul> <p>Örneğin BERT bir mimaridir; Google ekibinin BERT’in ilk sürümü için eğittiği ağırlık kümesi olan <code>bert-base-cased</code> ise bir checkpoint’tir. Yine de “BERT modeli” ve ”<code>bert-base-cased</code> modeli” denebilir.</p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/course/blob/main/chapters/tr/chapter1/4.mdx" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg><!----> <span><span class="underline">Update</span> on GitHub</span></a><!----> <p></p><!--]--><!----><!--]--><!--]--><!--]--> <!--[-1--><!--]--><!--]-->
<script>
{
__sveltekit_uzpin1 = {
base: "/docs/course/pr_1358/tr",
assets: "/docs/course/pr_1358/tr"
};
const element = document.currentScript.parentElement;
Promise.all([
import("/docs/course/pr_1358/tr/_app/immutable/entry/start.BIgaKcat.js"),
import("/docs/course/pr_1358/tr/_app/immutable/entry/app.BozjfrCo.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 8],
data: [null,null],
form: null,
error: null
});
});
}
</script>

Xet Storage Details

Size:
40.8 kB
·
Xet hash:
248d42b612a3e5208ece1f5262f4d76f9f1c03c505e7da3306af954f7173ab49

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.