chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 12:19:01 +08:00
commit 3b90d1192f
2172 changed files with 594509 additions and 0 deletions
@@ -0,0 +1,522 @@
<!DOCTYPE html>
<html lang="si">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="ශීත කළ BERT ආකෘතියක් භාවිතා කරමින් කුට්ටි සඳහා BERT කාවැද්දීම් ජනනය කරන්න"/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:image:src" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta name="twitter:title" content="පෙළ කැබලි වල බර්ට් කාවැද්දීම්"/>
<meta name="twitter:description" content="ශීත කළ BERT ආකෘතියක් භාවිතා කරමින් කුට්ටි සඳහා BERT කාවැද්දීම් ජනනය කරන්න"/>
<meta name="twitter:site" content="@labmlai"/>
<meta name="twitter:creator" content="@labmlai"/>
<meta property="og:url" content="https://nn.labml.ai/transformers/retro/bert_embeddings.html"/>
<meta property="og:title" content="පෙළ කැබලි වල බර්ට් කාවැද්දීම්"/>
<meta property="og:image" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta property="og:site_name" content="පෙළ කැබලි වල බර්ට් කාවැද්දීම්"/>
<meta property="og:type" content="object"/>
<meta property="og:title" content="පෙළ කැබලි වල බර්ට් කාවැද්දීම්"/>
<meta property="og:description" content="ශීත කළ BERT ආකෘතියක් භාවිතා කරමින් කුට්ටි සඳහා BERT කාවැද්දීම් ජනනය කරන්න"/>
<title>පෙළ කැබලි වල බර්ට් කාවැද්දීම්</title>
<link rel="shortcut icon" href="/icon.png"/>
<link rel="stylesheet" href="../../pylit.css?v=1">
<link rel="canonical" href="https://nn.labml.ai/transformers/retro/bert_embeddings.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css" integrity="sha384-zTROYFVGOfTw7JV7KUu8udsvW2fx4lWOsCEDqhBreBwlHI4ioVRtmIvEThzJHGET" crossorigin="anonymous">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4V3HC8HBLH"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-4V3HC8HBLH');
</script>
</head>
<body>
<div id='container'>
<div id="background"></div>
<div class='section'>
<div class='docs'>
<p>
<a class="parent" href="/">home</a>
<a class="parent" href="../index.html">transformers</a>
<a class="parent" href="index.html">retro</a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations" target="_blank">
<img alt="Github"
src="https://img.shields.io/github/stars/labmlai/annotated_deep_learning_paper_implementations?style=social"
style="max-width:100%;"/></a>
<a href="https://twitter.com/labmlai" rel="nofollow" target="_blank">
<img alt="Twitter"
src="https://img.shields.io/twitter/follow/labmlai?style=social"
style="max-width:100%;"/></a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/transformers/retro/bert_embeddings.py" target="_blank">
View code on Github</a>
</p>
</div>
</div>
<div class='section' id='section-0'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-0'>#</a>
</div>
<h1>පෙළකැබලි වල බර්ට් කාවැද්දීම්</h1>
<p><a href="index.html">RETRO ආකෘතිය</a>සඳහා කුට්ටි වල BERT කාවැද්දීම් ලබා ගැනීමේ කේතය මෙයයි. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">13</span><span></span><span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">List</span>
<span class="lineno">14</span>
<span class="lineno">15</span><span class="kn">import</span> <span class="nn">torch</span>
<span class="lineno">16</span><span class="kn">from</span> <span class="nn">transformers</span> <span class="kn">import</span> <span class="n">BertTokenizer</span><span class="p">,</span> <span class="n">BertModel</span>
<span class="lineno">17</span>
<span class="lineno">18</span><span class="kn">from</span> <span class="nn">labml</span> <span class="kn">import</span> <span class="n">lab</span><span class="p">,</span> <span class="n">monit</span></pre></div>
</div>
</div>
<div class='section' id='section-1'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-1'>#</a>
</div>
<h2>බර්ට්කාවැද්දීම්</h2>
<p>දීඇති පෙළ කුට්ටියක් සඳහා <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord coloredeq eqb" style=""><span class="mord mathnormal" style="margin-right:0.10903em">N</span></span></span></span></span></span> මෙම පන්තිය BERT කාවැද්දීම් ජනනය කරයි <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord coloredeq eqa" style=""><span class="mord text" style=""><span class="mord" style="">B</span><span class="mord sizing reset-size6 size5" style=""><span class="mord" style="">ERT</span></span></span><span class="mopen" style="">(</span><span class="mord" style=""><span class="mord mathnormal coloredeq eqb" style="margin-right:0.10903em">N</span></span><span class="mclose" style="">)</span></span></span></span></span></span>. <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord coloredeq eqa" style=""><span class="mord text" style=""><span class="mord" style="">B</span><span class="mord sizing reset-size6 size5" style=""><span class="mord" style="">ERT</span></span></span><span class="mopen" style="">(</span><span class="mord" style=""><span class="mord mathnormal coloredeq eqb" style="margin-right:0.10903em">N</span></span><span class="mclose" style="">)</span></span></span></span></span></span> සියලුම ටෝකන වල BERT කාවැද්දීම් වල <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord coloredeq eqb" style=""><span class="mord mathnormal" style="margin-right:0.10903em">N</span></span></span></span></span></span>සාමාන්යය වේ. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">21</span><span class="k">class</span> <span class="nc">BERTChunkEmbeddings</span><span class="p">:</span></pre></div>
</div>
</div>
<div class='section' id='section-2'>
<div class='docs'>
<div class='section-link'>
<a href='#section-2'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">29</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">):</span>
<span class="lineno">30</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">=</span> <span class="n">device</span></pre></div>
</div>
</div>
<div class='section' id='section-3'>
<div class='docs'>
<div class='section-link'>
<a href='#section-3'>#</a>
</div>
<p><a href="https://huggingface.co/bert-base-uncased">හග්ජිං ෆේස් වෙතින් බර්ට් ටෝකනයිසර්</a> පටවන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">33</span> <span class="k">with</span> <span class="n">monit</span><span class="o">.</span><span class="n">section</span><span class="p">(</span><span class="s1">&#39;Load BERT tokenizer&#39;</span><span class="p">):</span>
<span class="lineno">34</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">BertTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="s1">&#39;bert-base-uncased&#39;</span><span class="p">,</span>
<span class="lineno">35</span> <span class="n">cache_dir</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span>
<span class="lineno">36</span> <span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;cache&#39;</span> <span class="o">/</span> <span class="s1">&#39;bert-tokenizer&#39;</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-4'>
<div class='docs'>
<div class='section-link'>
<a href='#section-4'>#</a>
</div>
<p><a href="https://huggingface.co/bert-base-uncased">HuggingFace</a> වෙතින් බර්ට් ආකෘතිය පටවන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">39</span> <span class="k">with</span> <span class="n">monit</span><span class="o">.</span><span class="n">section</span><span class="p">(</span><span class="s1">&#39;Load BERT model&#39;</span><span class="p">):</span>
<span class="lineno">40</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">BertModel</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span><span class="s2">&quot;bert-base-uncased&quot;</span><span class="p">,</span>
<span class="lineno">41</span> <span class="n">cache_dir</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;cache&#39;</span> <span class="o">/</span> <span class="s1">&#39;bert-model&#39;</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-5'>
<div class='docs'>
<div class='section-link'>
<a href='#section-5'>#</a>
</div>
<p>ආකෘතියවෙත ගෙන යන්න <code class="highlight"><span></span><span class="n">device</span></code>
</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">44</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-6'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-6'>#</a>
</div>
<p> මෙමක්රියාත්මක කිරීමේදී, අපි ස්ථාවර ටෝකන සංඛ්යාවක් සමඟ කුට්ටි සාදන්නේ නැත. එක් හේතුවක් නම්, මෙම ක්රියාත්මක කිරීම චරිත මට්ටමේ ටෝකන භාවිතා කිරීම සහ BERT එහි උප වචන ටෝකනයිසර් භාවිතා කිරීමයි. </p>
<p>එබැවින්මෙම ක්රමය මඟින් අර්ධ ටෝකන නොමැති බවට වග බලා ගැනීම සඳහා පා truncate වේ. </p>
<p>නිදසුනක්වශයෙන්, කෙළවරේ අර්ධ වචන (අර්ධ උප වචන ටෝකන) සහිත කුට්ටියක් සමාන <code class="highlight"><span></span><span class="n">s</span> <span class="n">a</span> <span class="n">popular</span> <span class="n">programming</span> <span class="n">la</span></code>
විය හැකිය. වඩා හොඳ බර්ට් කාවැද්දීම් ලබා ගැනීම සඳහා අපි ඒවා ඉවත් කරමු. කලින් සඳහන් කළ පරිදි, ටෝකනීකරණයෙන් පසු අපි කුට්ටි කඩා දැමුවහොත් මෙය අවශ්ය නොවේ. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">46</span> <span class="nd">@staticmethod</span>
<span class="lineno">47</span> <span class="k">def</span> <span class="nf">_trim_chunk</span><span class="p">(</span><span class="n">chunk</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-7'>
<div class='docs'>
<div class='section-link'>
<a href='#section-7'>#</a>
</div>
<p>තීරුවයිට්ස්පේස් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">61</span> <span class="n">stripped</span> <span class="o">=</span> <span class="n">chunk</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-8'>
<div class='docs'>
<div class='section-link'>
<a href='#section-8'>#</a>
</div>
<p>වචනකඩන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">63</span> <span class="n">parts</span> <span class="o">=</span> <span class="n">stripped</span><span class="o">.</span><span class="n">split</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-9'>
<div class='docs'>
<div class='section-link'>
<a href='#section-9'>#</a>
</div>
<p>පළමුහා අවසාන කෑලි ඉවත් කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">65</span> <span class="n">stripped</span> <span class="o">=</span> <span class="n">stripped</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])]</span></pre></div>
</div>
</div>
<div class='section' id='section-10'>
<div class='docs'>
<div class='section-link'>
<a href='#section-10'>#</a>
</div>
<p>වයිට්ස්පේස්ඉවත් කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">68</span> <span class="n">stripped</span> <span class="o">=</span> <span class="n">stripped</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-11'>
<div class='docs'>
<div class='section-link'>
<a href='#section-11'>#</a>
</div>
<p>හිස්ආපසු මුල් string නම් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">71</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">stripped</span><span class="p">:</span>
<span class="lineno">72</span> <span class="k">return</span> <span class="n">chunk</span></pre></div>
</div>
</div>
<div class='section' id='section-12'>
<div class='docs'>
<div class='section-link'>
<a href='#section-12'>#</a>
</div>
<p>එසේනොමැතිනම්, ඉවත් කරන ලද නූල් ආපසු ලබා දෙන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">74</span> <span class="k">else</span><span class="p">:</span>
<span class="lineno">75</span> <span class="k">return</span> <span class="n">stripped</span></pre></div>
</div>
</div>
<div class='section' id='section-13'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-13'>#</a>
</div>
<h3>කුට්ටිලැයිස්තුවක් <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord coloredeq eqa" style=""><span class="mord text" style=""><span class="mord" style="">B</span><span class="mord sizing reset-size6 size5" style=""><span class="mord" style="">ERT</span></span></span><span class="mopen" style="">(</span><span class="mord" style=""><span class="mord mathnormal coloredeq eqb" style="margin-right:0.10903em">N</span></span><span class="mclose" style="">)</span></span></span></span></span></span> සඳහා ලබා ගන්න. </h3>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">77</span> <span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">chunks</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]):</span></pre></div>
</div>
</div>
<div class='section' id='section-14'>
<div class='docs'>
<div class='section-link'>
<a href='#section-14'>#</a>
</div>
<p>අපටඅනුක්රමික ගණනය කිරීමට අවශ්ය නැත </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">83</span> <span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span></pre></div>
</div>
</div>
<div class='section' id='section-15'>
<div class='docs'>
<div class='section-link'>
<a href='#section-15'>#</a>
</div>
<p>කුට්ටිකපන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">85</span> <span class="n">trimmed_chunks</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_trim_chunk</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-16'>
<div class='docs'>
<div class='section-link'>
<a href='#section-16'>#</a>
</div>
<p>බර්ට්ටෝකනයිසර් සමඟ කුට්ටි ටෝකන්ට් කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">88</span> <span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">trimmed_chunks</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s1">&#39;pt&#39;</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-17'>
<div class='docs'>
<div class='section-link'>
<a href='#section-17'>#</a>
</div>
<p>ටෝකන්හැඳුනුම්පත්, අවධානය ආවරණ සහ ටෝකන් වර්ග උපාංගයට ගෙන යන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">91</span> <span class="n">input_ids</span> <span class="o">=</span> <span class="n">tokens</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">)</span>
<span class="lineno">92</span> <span class="n">attention_mask</span> <span class="o">=</span> <span class="n">tokens</span><span class="p">[</span><span class="s1">&#39;attention_mask&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">)</span>
<span class="lineno">93</span> <span class="n">token_type_ids</span> <span class="o">=</span> <span class="n">tokens</span><span class="p">[</span><span class="s1">&#39;token_type_ids&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-18'>
<div class='docs'>
<div class='section-link'>
<a href='#section-18'>#</a>
</div>
<p>ආකෘතියතක්සේරු කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">95</span> <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">(</span><span class="n">input_ids</span><span class="o">=</span><span class="n">input_ids</span><span class="p">,</span>
<span class="lineno">96</span> <span class="n">attention_mask</span><span class="o">=</span><span class="n">attention_mask</span><span class="p">,</span>
<span class="lineno">97</span> <span class="n">token_type_ids</span><span class="o">=</span><span class="n">token_type_ids</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-19'>
<div class='docs'>
<div class='section-link'>
<a href='#section-19'>#</a>
</div>
<p>ටෝකන්කාවැද්දීම් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">100</span> <span class="n">state</span> <span class="o">=</span> <span class="n">output</span><span class="p">[</span><span class="s1">&#39;last_hidden_state&#39;</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-20'>
<div class='docs'>
<div class='section-link'>
<a href='#section-20'>#</a>
</div>
<p>සාමාන්යටෝකන කාවැද්දීම් ගණනය කරන්න. ටෝකනය හිස් පෑඩ් <code class="highlight"><span></span><span class="mi">0</span></code>
නම් අවධානය යොමු කිරීමේ ආවරණ බව සලකන්න. කුට්ටි විවිධ දිග බැවින් අපට හිස් ටෝකන ලැබේ. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">104</span> <span class="n">emb</span> <span class="o">=</span> <span class="p">(</span><span class="n">state</span> <span class="o">*</span> <span class="n">attention_mask</span><span class="p">[:,</span> <span class="p">:,</span> <span class="kc">None</span><span class="p">])</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="n">attention_mask</span><span class="p">[:,</span> <span class="p">:,</span> <span class="kc">None</span><span class="p">]</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">dim</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-21'>
<div class='docs'>
<div class='section-link'>
<a href='#section-21'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">107</span> <span class="k">return</span> <span class="n">emb</span></pre></div>
</div>
</div>
<div class='section' id='section-22'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-22'>#</a>
</div>
<h3>BERTකාවැද්දීම් පරීක්ෂා කිරීමට කේතය</h3>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">110</span><span class="k">def</span> <span class="nf">_test</span><span class="p">():</span></pre></div>
</div>
</div>
<div class='section' id='section-23'>
<div class='docs'>
<div class='section-link'>
<a href='#section-23'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">114</span> <span class="kn">from</span> <span class="nn">labml.logger</span> <span class="kn">import</span> <span class="n">inspect</span></pre></div>
</div>
</div>
<div class='section' id='section-24'>
<div class='docs'>
<div class='section-link'>
<a href='#section-24'>#</a>
</div>
<p>ආරම්භකරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">117</span> <span class="n">device</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">(</span><span class="s1">&#39;cuda:0&#39;</span><span class="p">)</span>
<span class="lineno">118</span> <span class="n">bert</span> <span class="o">=</span> <span class="n">BERTChunkEmbeddings</span><span class="p">(</span><span class="n">device</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-25'>
<div class='docs'>
<div class='section-link'>
<a href='#section-25'>#</a>
</div>
<p>නියැදිය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">121</span> <span class="n">text</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;Replace me by any text you&#39;d like.&quot;</span><span class="p">,</span>
<span class="lineno">122</span> <span class="s2">&quot;Second sentence&quot;</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-26'>
<div class='docs'>
<div class='section-link'>
<a href='#section-26'>#</a>
</div>
<p>බර්ට්ටෝකනයිසර් පරීක්ෂා කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">125</span> <span class="n">encoded_input</span> <span class="o">=</span> <span class="n">bert</span><span class="o">.</span><span class="n">tokenizer</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">return_tensors</span><span class="o">=</span><span class="s1">&#39;pt&#39;</span><span class="p">,</span> <span class="n">add_special_tokens</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="lineno">126</span>
<span class="lineno">127</span> <span class="n">inspect</span><span class="p">(</span><span class="n">encoded_input</span><span class="p">,</span> <span class="n">_expand</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-27'>
<div class='docs'>
<div class='section-link'>
<a href='#section-27'>#</a>
</div>
<p>බර්ට්ආකෘති ප්රතිදානයන් පරීක්ෂා කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">130</span> <span class="n">output</span> <span class="o">=</span> <span class="n">bert</span><span class="o">.</span><span class="n">model</span><span class="p">(</span><span class="n">input_ids</span><span class="o">=</span><span class="n">encoded_input</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">),</span>
<span class="lineno">131</span> <span class="n">attention_mask</span><span class="o">=</span><span class="n">encoded_input</span><span class="p">[</span><span class="s1">&#39;attention_mask&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">),</span>
<span class="lineno">132</span> <span class="n">token_type_ids</span><span class="o">=</span><span class="n">encoded_input</span><span class="p">[</span><span class="s1">&#39;token_type_ids&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">))</span>
<span class="lineno">133</span>
<span class="lineno">134</span> <span class="n">inspect</span><span class="p">({</span><span class="s1">&#39;last_hidden_state&#39;</span><span class="p">:</span> <span class="n">output</span><span class="p">[</span><span class="s1">&#39;last_hidden_state&#39;</span><span class="p">],</span>
<span class="lineno">135</span> <span class="s1">&#39;pooler_output&#39;</span><span class="p">:</span> <span class="n">output</span><span class="p">[</span><span class="s1">&#39;pooler_output&#39;</span><span class="p">]},</span>
<span class="lineno">136</span> <span class="n">_expand</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-28'>
<div class='docs'>
<div class='section-link'>
<a href='#section-28'>#</a>
</div>
<p>ටෝකන්id වලින් පෙළ ප්රතිනිර්මාණය කිරීම පරීක්ෂා කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">139</span> <span class="n">inspect</span><span class="p">(</span><span class="n">bert</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">convert_ids_to_tokens</span><span class="p">(</span><span class="n">encoded_input</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]),</span> <span class="n">_n</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span>
<span class="lineno">140</span> <span class="n">inspect</span><span class="p">(</span><span class="n">bert</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">convert_ids_to_tokens</span><span class="p">(</span><span class="n">encoded_input</span><span class="p">[</span><span class="s1">&#39;input_ids&#39;</span><span class="p">][</span><span class="mi">1</span><span class="p">]),</span> <span class="n">_n</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-29'>
<div class='docs'>
<div class='section-link'>
<a href='#section-29'>#</a>
</div>
<p>කුට්ටිකාවැද්දීම් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">143</span> <span class="n">inspect</span><span class="p">(</span><span class="n">bert</span><span class="p">(</span><span class="n">text</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-30'>
<div class='docs'>
<div class='section-link'>
<a href='#section-30'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">147</span><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
<span class="lineno">148</span> <span class="n">_test</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='footer'>
<a href="https://papers.labml.ai">Trending Research Papers</a>
<a href="https://labml.ai">labml.ai</a>
</div>
</div>
<script src=../../interactive.js?v=1"></script>
<script>
function handleImages() {
var images = document.querySelectorAll('p>img')
for (var i = 0; i < images.length; ++i) {
handleImage(images[i])
}
}
function handleImage(img) {
img.parentElement.style.textAlign = 'center'
var modal = document.createElement('div')
modal.id = 'modal'
var modalContent = document.createElement('div')
modal.appendChild(modalContent)
var modalImage = document.createElement('img')
modalContent.appendChild(modalImage)
var span = document.createElement('span')
span.classList.add('close')
span.textContent = 'x'
modal.appendChild(span)
img.onclick = function () {
console.log('clicked')
document.body.appendChild(modal)
modalImage.src = img.src
}
span.onclick = function () {
document.body.removeChild(modal)
}
}
handleImages()
</script>
</body>
</html>
+536
View File
@@ -0,0 +1,536 @@
<!DOCTYPE html>
<html lang="si">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="ආසන්නතම අසල්වැසියා නැවත ලබා ගැනීම සහ දත්ත සමුදාය නිර්මාණය කිරීම"/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:image:src" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta name="twitter:title" content="ළඟම අසල්වැසියා ලබා ගැනීම සඳහා දත්ත සමුදාය"/>
<meta name="twitter:description" content="ආසන්නතම අසල්වැසියා නැවත ලබා ගැනීම සහ දත්ත සමුදාය නිර්මාණය කිරීම"/>
<meta name="twitter:site" content="@labmlai"/>
<meta name="twitter:creator" content="@labmlai"/>
<meta property="og:url" content="https://nn.labml.ai/transformers/retro/database.html"/>
<meta property="og:title" content="ළඟම අසල්වැසියා ලබා ගැනීම සඳහා දත්ත සමුදාය"/>
<meta property="og:image" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta property="og:site_name" content="ළඟම අසල්වැසියා ලබා ගැනීම සඳහා දත්ත සමුදාය"/>
<meta property="og:type" content="object"/>
<meta property="og:title" content="ළඟම අසල්වැසියා ලබා ගැනීම සඳහා දත්ත සමුදාය"/>
<meta property="og:description" content="ආසන්නතම අසල්වැසියා නැවත ලබා ගැනීම සහ දත්ත සමුදාය නිර්මාණය කිරීම"/>
<title>ළඟම අසල්වැසියා ලබා ගැනීම සඳහා දත්ත සමුදාය</title>
<link rel="shortcut icon" href="/icon.png"/>
<link rel="stylesheet" href="../../pylit.css?v=1">
<link rel="canonical" href="https://nn.labml.ai/transformers/retro/database.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css" integrity="sha384-zTROYFVGOfTw7JV7KUu8udsvW2fx4lWOsCEDqhBreBwlHI4ioVRtmIvEThzJHGET" crossorigin="anonymous">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4V3HC8HBLH"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-4V3HC8HBLH');
</script>
</head>
<body>
<div id='container'>
<div id="background"></div>
<div class='section'>
<div class='docs'>
<p>
<a class="parent" href="/">home</a>
<a class="parent" href="../index.html">transformers</a>
<a class="parent" href="index.html">retro</a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations" target="_blank">
<img alt="Github"
src="https://img.shields.io/github/stars/labmlai/annotated_deep_learning_paper_implementations?style=social"
style="max-width:100%;"/></a>
<a href="https://twitter.com/labmlai" rel="nofollow" target="_blank">
<img alt="Twitter"
src="https://img.shields.io/twitter/follow/labmlai?style=social"
style="max-width:100%;"/></a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/transformers/retro/database.py" target="_blank">
View code on Github</a>
</p>
</div>
</div>
<div class='section' id='section-0'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-0'>#</a>
</div>
<h1>ළඟමඅසල්වැසියා ලබා ගැනීම සඳහා දත්ත සමුදාය</h1>
<p>මෙයවේ දත්ත සමුදාය සාදන්න සහ <a href="index.html">RETRO ආකෘතිය</a>සඳහා ළඟම අසල්වැසියන් ලබා ගනී. </p>
</a> <p>කඩදාසිScanN පුස්තකාලය භාවිතා කර ඇති අතර දත්ත සමුදාය සඳහා අපි <a href="https://faiss.ai/">FaISS පුස්තකාලය භාවිතා කරමු. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">16</span><span></span><span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span>
<span class="lineno">17</span>
<span class="lineno">18</span><span class="kn">import</span> <span class="nn">faiss</span>
<span class="lineno">19</span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="lineno">20</span><span class="kn">import</span> <span class="nn">torch</span>
<span class="lineno">21</span>
<span class="lineno">22</span><span class="kn">from</span> <span class="nn">labml</span> <span class="kn">import</span> <span class="n">lab</span><span class="p">,</span> <span class="n">monit</span>
<span class="lineno">23</span><span class="kn">from</span> <span class="nn">labml_helpers.datasets.text</span> <span class="kn">import</span> <span class="n">TextFileDataset</span>
<span class="lineno">24</span><span class="kn">from</span> <span class="nn">labml_nn.transformers.retro.bert_embeddings</span> <span class="kn">import</span> <span class="n">BERTChunkEmbeddings</span></pre></div>
</div>
</div>
<div class='section' id='section-1'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-1'>#</a>
</div>
<h2>දත්තසමුදාය ගොඩනැගීම</h2>
<ul><li><code class="highlight"><span></span><span class="n">chunk_len</span></code>
යනු කුට්ටියක දිග (අක්ෂර ගණන) </li>
<li><code class="highlight"><span></span><span class="n">batch_size</span></code>
ගණනය කිරීමේදී භාවිතා කළ යුතු කණ්ඩායම් ප්රමාණයයි <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord coloredeq eqa" style=""><span class="mord text" style=""><span class="mord" style="">B</span><span class="mord sizing reset-size6 size5" style=""><span class="mord" style="">ERT</span></span></span><span class="mopen" style="">(</span><span class="mord mathnormal" style="margin-right:0.10903em">N</span><span class="mclose" style="">)</span></span></span></span></span></span> </li>
<li><code class="highlight"><span></span><span class="n">d_emb</span></code>
<a href="https://faiss.ai/cpp_api/struct/structfaiss_1_1IndexIVFPQ.html">FAISS දර්ශකයේ තෝරා ගැනීම සඳහා <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord coloredeq eqa" style=""><span class="mord text" style=""><span class="mord" style="">B</span><span class="mord sizing reset-size6 size5" style=""><span class="mord" style="">ERT</span></span></span><span class="mopen" style="">(</span><span class="mord mathnormal" style="margin-right:0.10903em">N</span><span class="mclose" style="">)</span></span></span></span></span></span> කාවැද්දීම් ලැයිස්තු වල</a> විශේෂාංග ගණන වේ </li>
<li><code class="highlight"><span></span><span class="n">n_centeroids</span></code>
දර්ශකයේ ලැයිස්තු ගණන </li>
<li><code class="highlight"><span></span><span class="n">code_size</span></code>
දර්ශකයේ කේතනය කරන ලද දෛශික ප්රමාණය </li>
<li><code class="highlight"><span></span><span class="n">n_probe</span></code>
විමර්ශනය කළ යුතු ලැයිස්තු ගණන </li>
<li>`n_train'යනු දර්ශකය පුහුණු කිරීම සඳහා යතුරු ගණන වේ</li></ul>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">27</span><span class="k">def</span> <span class="nf">build_database</span><span class="p">(</span><span class="n">chunk_len</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">16</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">64</span><span class="p">,</span> <span class="n">d_emb</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">768</span><span class="p">,</span> <span class="n">n_centeroids</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">256</span><span class="p">,</span>
<span class="lineno">28</span> <span class="n">code_size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">64</span><span class="p">,</span> <span class="n">n_probe</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">8</span><span class="p">,</span> <span class="n">n_train</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">50_000</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-2'>
<div class='docs'>
<div class='section-link'>
<a href='#section-2'>#</a>
</div>
<p>දත්තසමුදාය පෙළ ගොනුව පූරණය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">43</span> <span class="n">dataset</span> <span class="o">=</span> <span class="n">TextFileDataset</span><span class="p">(</span>
<span class="lineno">44</span> <span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;tiny_shakespeare.txt&#39;</span><span class="p">,</span>
<span class="lineno">45</span> <span class="nb">list</span><span class="p">,</span>
<span class="lineno">46</span> <span class="n">url</span><span class="o">=</span><span class="s1">&#39;https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt&#39;</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-3'>
<div class='docs'>
<div class='section-link'>
<a href='#section-3'>#</a>
</div>
<p>පුහුණුදත්ත ලබා ගන්න (නූලක්) </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">49</span> <span class="n">text</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">train</span></pre></div>
</div>
</div>
<div class='section' id='section-4'>
<div class='docs'>
<div class='section-link'>
<a href='#section-4'>#</a>
</div>
<p>පෙළකැබලි වලට බෙදන්න <code class="highlight"><span></span><span class="n">chunk_length</span></code>
</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">52</span> <span class="n">chunks</span> <span class="o">=</span> <span class="p">[</span><span class="n">text</span><span class="p">[</span><span class="n">i</span><span class="p">:</span><span class="n">i</span> <span class="o">+</span> <span class="n">chunk_len</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="n">chunk_len</span><span class="p">)</span> <span class="k">if</span> <span class="n">i</span> <span class="o">+</span> <span class="n">chunk_len</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)]</span></pre></div>
</div>
</div>
<div class='section' id='section-5'>
<div class='docs'>
<div class='section-link'>
<a href='#section-5'>#</a>
</div>
<p>එක්එක් කුට්ටි වල ඕෆ්සෙට් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">54</span> <span class="n">chunk_offsets</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="n">chunk_len</span><span class="p">)</span> <span class="k">if</span> <span class="n">i</span> <span class="o">+</span> <span class="n">chunk_len</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)])</span></pre></div>
</div>
</div>
<div class='section' id='section-6'>
<div class='docs'>
<div class='section-link'>
<a href='#section-6'>#</a>
</div>
<p>කුට්ටිගණන </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">56</span> <span class="n">n_chunks</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">chunks</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-7'>
<div class='docs'>
<div class='section-link'>
<a href='#section-7'>#</a>
</div>
<p>ලබාගැනීම සඳහා බර්ට් ආරම්භ කරන්න <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord coloredeq eqa" style=""><span class="mord text" style=""><span class="mord" style="">B</span><span class="mord sizing reset-size6 size5" style=""><span class="mord" style="">ERT</span></span></span><span class="mopen" style="">(</span><span class="mord mathnormal" style="margin-right:0.10903em">N</span><span class="mclose" style="">)</span></span></span></span></span></span> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">59</span> <span class="n">bert</span> <span class="o">=</span> <span class="n">BERTChunkEmbeddings</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">(</span><span class="s1">&#39;cuda:0&#39;</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-8'>
<div class='docs'>
<div class='section-link'>
<a href='#section-8'>#</a>
</div>
<p>එක්එක් පුනරාවර්තනයේ කුට්ටි <code class="highlight"><span></span><span class="n">batch_size</span></code>
ගණන සැකසීම මගින් කුට්ටි කාවැද්දීම් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">62</span> <span class="n">chunk_emb</span> <span class="o">=</span> <span class="p">[]</span>
<span class="lineno">63</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">monit</span><span class="o">.</span><span class="n">iterate</span><span class="p">(</span><span class="s1">&#39;Get embeddings&#39;</span><span class="p">,</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">n_chunks</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">)):</span>
<span class="lineno">64</span> <span class="n">chunk_emb</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bert</span><span class="p">(</span><span class="n">chunks</span><span class="p">[</span><span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="n">batch_size</span><span class="p">])</span><span class="o">.</span><span class="n">cpu</span><span class="p">())</span></pre></div>
</div>
</div>
<div class='section' id='section-9'>
<div class='docs'>
<div class='section-link'>
<a href='#section-9'>#</a>
</div>
<p>ඒවාතනි ආතනයකට ඒකාබද්ධ කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">66</span> <span class="n">chunk_emb</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">chunk_emb</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">numpy</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-10'>
<div class='docs'>
<div class='section-link'>
<a href='#section-10'>#</a>
</div>
<p><a href="https://faiss.ai/cpp_api/struct/structfaiss_1_1IndexIVFPQ.html">FAISS දර්ශකය</a> සාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">69</span> <span class="n">quantizer</span> <span class="o">=</span> <span class="n">faiss</span><span class="o">.</span><span class="n">IndexFlatL2</span><span class="p">(</span><span class="n">d_emb</span><span class="p">)</span>
<span class="lineno">70</span> <span class="n">index</span> <span class="o">=</span> <span class="n">faiss</span><span class="o">.</span><span class="n">IndexIVFPQ</span><span class="p">(</span><span class="n">quantizer</span><span class="p">,</span> <span class="n">d_emb</span><span class="p">,</span> <span class="n">n_centeroids</span><span class="p">,</span> <span class="n">code_size</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span>
<span class="lineno">71</span> <span class="n">index</span><span class="o">.</span><span class="n">nprobe</span> <span class="o">=</span> <span class="n">n_probe</span></pre></div>
</div>
</div>
<div class='section' id='section-11'>
<div class='docs'>
<div class='section-link'>
<a href='#section-11'>#</a>
</div>
<p>කුට්ටම්දර්ශකවල අහඹු නියැදියක් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">74</span> <span class="n">random_sample</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">n_chunks</span><span class="p">),</span> <span class="n">size</span><span class="o">=</span><span class="p">[</span><span class="nb">min</span><span class="p">(</span><span class="n">n_train</span><span class="p">,</span> <span class="n">n_chunks</span><span class="p">)],</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-12'>
<div class='docs'>
<div class='section-link'>
<a href='#section-12'>#</a>
</div>
<p>යතුරුගබඩා කිරීම සඳහා දර්ශකය පුහුණු කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">77</span> <span class="k">with</span> <span class="n">monit</span><span class="o">.</span><span class="n">section</span><span class="p">(</span><span class="s1">&#39;Train index&#39;</span><span class="p">):</span>
<span class="lineno">78</span> <span class="n">index</span><span class="o">.</span><span class="n">train</span><span class="p">(</span><span class="n">chunk_emb</span><span class="p">[</span><span class="n">random_sample</span><span class="p">])</span></pre></div>
</div>
</div>
<div class='section' id='section-13'>
<div class='docs'>
<div class='section-link'>
<a href='#section-13'>#</a>
</div>
<p>ප්රමාණයෙන්කාණ්ඩවල දර්ශකයට කුට්ටි එකතු කරන්න <code class="highlight"><span></span><span class="mi">1024</span></code>
</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">81</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">monit</span><span class="o">.</span><span class="n">iterate</span><span class="p">(</span><span class="s1">&#39;Index&#39;</span><span class="p">,</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">n_chunks</span><span class="p">,</span> <span class="mi">1024</span><span class="p">)):</span>
<span class="lineno">82</span> <span class="n">e</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">s</span> <span class="o">+</span> <span class="mi">1024</span><span class="p">,</span> <span class="n">n_chunks</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-14'>
<div class='docs'>
<div class='section-link'>
<a href='#section-14'>#</a>
</div>
<p>දර්ශකයටඑකතු කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">84</span> <span class="n">index</span><span class="o">.</span><span class="n">add_with_ids</span><span class="p">(</span><span class="n">chunk_emb</span><span class="p">[</span><span class="n">s</span><span class="p">:</span><span class="n">e</span><span class="p">],</span> <span class="n">chunk_offsets</span><span class="p">[</span><span class="n">s</span><span class="p">:</span> <span class="n">e</span><span class="p">])</span></pre></div>
</div>
</div>
<div class='section' id='section-15'>
<div class='docs'>
<div class='section-link'>
<a href='#section-15'>#</a>
</div>
<p>දර්ශකයසුරකින්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">87</span> <span class="k">with</span> <span class="n">monit</span><span class="o">.</span><span class="n">section</span><span class="p">(</span><span class="s1">&#39;Save&#39;</span><span class="p">):</span>
<span class="lineno">88</span> <span class="n">faiss</span><span class="o">.</span><span class="n">write_index</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;retro.index&#39;</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-16'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-16'>#</a>
</div>
<h2>ළඟමඅසල්වැසියන් ලබා ගැනීම සඳහා දර්ශකය</h2>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">91</span><span class="k">class</span> <span class="nc">RetroIndex</span><span class="p">:</span></pre></div>
</div>
</div>
<div class='section' id='section-17'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-17'>#</a>
</div>
<ul><li><code class="highlight"><span></span><span class="n">chunk_len</span></code>
කුටියේ දිග වේ </li>
<li><code class="highlight"><span></span><span class="n">n_probe</span></code>
විමර්ශනය කළ යුතු ලැයිස්තු ගණන </li>
<li><code class="highlight"><span></span><span class="n">n_neighbors</span></code>
ලබා ගැනීමට අසල්වැසියන් සංඛ්යාව </li>
<li><code class="highlight"><span></span><span class="n">n_extra</span></code>
අපි විමසුම් කුට්ටියේ සමග අතිච්ඡාදනය අසල්වැසියන් ඉවත් කරනු ඇත සිට ලබා ගැනීමට අමතර අසල්වැසියන් සංඛ්යාව වේ </li>
<li><code class="highlight"><span></span><span class="n">exclude_neighbor_span</span></code>
අතිච්ඡාදනය සඳහා පරීක්ෂා කිරීමේදී වළක්වා ගත යුතු අමතර පෙළ දිග වේ</li></ul>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">96</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">chunk_len</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">16</span><span class="p">,</span> <span class="n">n_probe</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">8</span><span class="p">,</span>
<span class="lineno">97</span> <span class="n">n_neighbors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">n_extra</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
<span class="lineno">98</span> <span class="n">exclude_neighbor_span</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">8</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-18'>
<div class='docs'>
<div class='section-link'>
<a href='#section-18'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">108</span> <span class="bp">self</span><span class="o">.</span><span class="n">n_neighbors</span> <span class="o">=</span> <span class="n">n_neighbors</span>
<span class="lineno">109</span> <span class="bp">self</span><span class="o">.</span><span class="n">chunk_len</span> <span class="o">=</span> <span class="n">chunk_len</span>
<span class="lineno">110</span> <span class="bp">self</span><span class="o">.</span><span class="n">exclude_neighbor_span</span> <span class="o">=</span> <span class="n">exclude_neighbor_span</span>
<span class="lineno">111</span> <span class="bp">self</span><span class="o">.</span><span class="n">n_extra</span> <span class="o">=</span> <span class="n">n_extra</span></pre></div>
</div>
</div>
<div class='section' id='section-19'>
<div class='docs'>
<div class='section-link'>
<a href='#section-19'>#</a>
</div>
<p>ලබාගැනීම සඳහා බර්ට් ආරම්භ කරන්න <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord coloredeq eqa" style=""><span class="mord text" style=""><span class="mord" style="">B</span><span class="mord sizing reset-size6 size5" style=""><span class="mord" style="">ERT</span></span></span><span class="mopen" style="">(</span><span class="mord mathnormal" style="margin-right:0.10903em">N</span><span class="mclose" style="">)</span></span></span></span></span></span> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">114</span> <span class="bp">self</span><span class="o">.</span><span class="n">bert</span> <span class="o">=</span> <span class="n">BERTChunkEmbeddings</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">(</span><span class="s1">&#39;cuda:0&#39;</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-20'>
<div class='docs'>
<div class='section-link'>
<a href='#section-20'>#</a>
</div>
<p>දත්තසමුදාය පටවන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">116</span> <span class="k">with</span> <span class="n">monit</span><span class="o">.</span><span class="n">section</span><span class="p">(</span><span class="s1">&#39;Load index&#39;</span><span class="p">):</span>
<span class="lineno">117</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">faiss</span><span class="o">.</span><span class="n">read_index</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;retro.index&#39;</span><span class="p">))</span>
<span class="lineno">118</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">nprobe</span> <span class="o">=</span> <span class="n">n_probe</span></pre></div>
</div>
</div>
<div class='section' id='section-21'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-21'>#</a>
</div>
<h4>විමසුමසමඟ අතිච්ඡාදනය වන අසල්වැසියන් පෙරහන් කරන්න</h4>
<p>අසල්වාසීන්ගේතනතුරු ලබා දී ඇති <code class="highlight"><span></span><span class="n">neighbor_offsets</span></code>
අතර විමසුම් කුට්ටියේ පිහිටීම වේ <code class="highlight"><span></span><span class="n">offset</span></code>
. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">120</span> <span class="k">def</span> <span class="nf">filter_neighbors</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">neighbor_offsets</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]):</span></pre></div>
</div>
</div>
<div class='section' id='section-22'>
<div class='docs'>
<div class='section-link'>
<a href='#section-22'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">127</span> <span class="k">return</span> <span class="p">[</span><span class="n">n</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">neighbor_offsets</span>
<span class="lineno">128</span> <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="n">offset</span> <span class="o">-</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">chunk_len</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">exclude_neighbor_span</span><span class="p">)</span>
<span class="lineno">129</span> <span class="ow">or</span> <span class="n">n</span> <span class="o">&gt;</span> <span class="n">offset</span> <span class="o">+</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">chunk_len</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">exclude_neighbor_span</span><span class="p">)]</span></pre></div>
</div>
</div>
<div class='section' id='section-23'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-23'>#</a>
</div>
<h3>ළඟමඅසල්වැසියන් ලබා ගන්න</h3>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">131</span> <span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query_chunks</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">offsets</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]]):</span></pre></div>
</div>
</div>
<div class='section' id='section-24'>
<div class='docs'>
<div class='section-link'>
<a href='#section-24'>#</a>
</div>
<p>විමසුම්කුට්ටි ලබා ගන්න <span ><span class="katex"><span aria-hidden="true" class="katex-html"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord coloredeq eqa" style=""><span class="mord text" style=""><span class="mord" style="">B</span><span class="mord sizing reset-size6 size5" style=""><span class="mord" style="">ERT</span></span></span><span class="mopen" style="">(</span><span class="mord mathnormal" style="margin-right:0.10903em">N</span><span class="mclose" style="">)</span></span></span></span></span></span> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">137</span> <span class="n">emb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bert</span><span class="p">(</span><span class="n">query_chunks</span><span class="p">)</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-25'>
<div class='docs'>
<div class='section-link'>
<a href='#section-25'>#</a>
</div>
<p>දත්තගබඩාවෙන් <code class="highlight"><span></span><span class="n">n_neighbors</span> <span class="o">+</span> <span class="n">n_extra</span></code>
ළඟම අසල්වැසියන් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">140</span> <span class="n">distance</span><span class="p">,</span> <span class="n">neighbor_offsets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">emb</span><span class="o">.</span><span class="n">numpy</span><span class="p">(),</span> <span class="bp">self</span><span class="o">.</span><span class="n">n_neighbors</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">n_extra</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-26'>
<div class='docs'>
<div class='section-link'>
<a href='#section-26'>#</a>
</div>
<p>විමසුමකුට්ටියේ ඕෆ්සෙට් අතිච්ඡාදනය කුට්ටි සිදු පෙරහන ලබා දී තිබේ නම් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">143</span> <span class="k">if</span> <span class="n">offsets</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="lineno">144</span> <span class="n">neighbor_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">filter_neighbors</span><span class="p">(</span><span class="n">off</span><span class="p">,</span> <span class="n">n_off</span><span class="p">)</span>
<span class="lineno">145</span> <span class="k">for</span> <span class="n">off</span><span class="p">,</span> <span class="n">n_off</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">offsets</span><span class="p">,</span> <span class="n">neighbor_offsets</span><span class="p">)]</span></pre></div>
</div>
</div>
<div class='section' id='section-27'>
<div class='docs'>
<div class='section-link'>
<a href='#section-27'>#</a>
</div>
<p><code class="highlight"><span></span><span class="n">n_neighbors</span></code>
පෙරීමෙන් පසු ආසන්නතම දේ ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">148</span> <span class="n">neighbor_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">n_off</span><span class="p">[:</span><span class="bp">self</span><span class="o">.</span><span class="n">n_neighbors</span><span class="p">]</span> <span class="k">for</span> <span class="n">n_off</span> <span class="ow">in</span> <span class="n">neighbor_offsets</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-28'>
<div class='docs'>
<div class='section-link'>
<a href='#section-28'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">151</span> <span class="k">return</span> <span class="n">neighbor_offsets</span></pre></div>
</div>
</div>
<div class='section' id='section-29'>
<div class='docs'>
<div class='section-link'>
<a href='#section-29'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">155</span><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
<span class="lineno">156</span> <span class="n">build_database</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='footer'>
<a href="https://papers.labml.ai">Trending Research Papers</a>
<a href="https://labml.ai">labml.ai</a>
</div>
</div>
<script src=../../interactive.js?v=1"></script>
<script>
function handleImages() {
var images = document.querySelectorAll('p>img')
for (var i = 0; i < images.length; ++i) {
handleImage(images[i])
}
}
function handleImage(img) {
img.parentElement.style.textAlign = 'center'
var modal = document.createElement('div')
modal.id = 'modal'
var modalContent = document.createElement('div')
modal.appendChild(modalContent)
var modalImage = document.createElement('img')
modalContent.appendChild(modalImage)
var span = document.createElement('span')
span.classList.add('close')
span.textContent = 'x'
modal.appendChild(span)
img.onclick = function () {
console.log('clicked')
document.body.appendChild(modal)
modalImage.src = img.src
}
span.onclick = function () {
document.body.removeChild(modal)
}
}
handleImages()
</script>
</body>
</html>
+531
View File
@@ -0,0 +1,531 @@
<!DOCTYPE html>
<html lang="si">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="RETRO ආදර්ශ පුහුණුව සඳහා දත්ත කට්ටලයක් සාදන්න"/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:image:src" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta name="twitter:title" content="RETRO සඳහා පුහුණු දත්ත කට්ටලය"/>
<meta name="twitter:description" content="RETRO ආදර්ශ පුහුණුව සඳහා දත්ත කට්ටලයක් සාදන්න"/>
<meta name="twitter:site" content="@labmlai"/>
<meta name="twitter:creator" content="@labmlai"/>
<meta property="og:url" content="https://nn.labml.ai/transformers/retro/dataset.html"/>
<meta property="og:title" content="RETRO සඳහා පුහුණු දත්ත කට්ටලය"/>
<meta property="og:image" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta property="og:site_name" content="RETRO සඳහා පුහුණු දත්ත කට්ටලය"/>
<meta property="og:type" content="object"/>
<meta property="og:title" content="RETRO සඳහා පුහුණු දත්ත කට්ටලය"/>
<meta property="og:description" content="RETRO ආදර්ශ පුහුණුව සඳහා දත්ත කට්ටලයක් සාදන්න"/>
<title>RETRO සඳහා පුහුණු දත්ත කට්ටලය</title>
<link rel="shortcut icon" href="/icon.png"/>
<link rel="stylesheet" href="../../pylit.css?v=1">
<link rel="canonical" href="https://nn.labml.ai/transformers/retro/dataset.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css" integrity="sha384-zTROYFVGOfTw7JV7KUu8udsvW2fx4lWOsCEDqhBreBwlHI4ioVRtmIvEThzJHGET" crossorigin="anonymous">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4V3HC8HBLH"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-4V3HC8HBLH');
</script>
</head>
<body>
<div id='container'>
<div id="background"></div>
<div class='section'>
<div class='docs'>
<p>
<a class="parent" href="/">home</a>
<a class="parent" href="../index.html">transformers</a>
<a class="parent" href="index.html">retro</a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations" target="_blank">
<img alt="Github"
src="https://img.shields.io/github/stars/labmlai/annotated_deep_learning_paper_implementations?style=social"
style="max-width:100%;"/></a>
<a href="https://twitter.com/labmlai" rel="nofollow" target="_blank">
<img alt="Twitter"
src="https://img.shields.io/twitter/follow/labmlai?style=social"
style="max-width:100%;"/></a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/transformers/retro/dataset.py" target="_blank">
View code on Github</a>
</p>
</div>
</div>
<div class='section' id='section-0'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-0'>#</a>
</div>
<h1>රෙට්රෝපුහුණු දත්ත කට්ටලය</h1>
<p>අපිළඟම අසල්වැසියන් ප්රධාන <a href="database.html">වටිනාකම් දත්ත ගබඩාවෙන්</a> පූර්ව ලබා ගෙන <a href="index.html">RETRO</a> <a href="model.html">ආකෘතිය</a> පුහුණු කිරීම සඳහා දත්ත කට්ටලය නිර්මාණය කරමු. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">15</span><span></span><span class="kn">import</span> <span class="nn">json</span>
<span class="lineno">16</span><span class="kn">from</span> <span class="nn">pathlib</span> <span class="kn">import</span> <span class="n">Path</span>
<span class="lineno">17</span>
<span class="lineno">18</span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="lineno">19</span><span class="kn">import</span> <span class="nn">torch</span>
<span class="lineno">20</span><span class="kn">from</span> <span class="nn">torch.utils.data</span> <span class="kn">import</span> <span class="n">Dataset</span> <span class="k">as</span> <span class="n">PyTorchDataset</span>
<span class="lineno">21</span>
<span class="lineno">22</span><span class="kn">from</span> <span class="nn">labml</span> <span class="kn">import</span> <span class="n">lab</span><span class="p">,</span> <span class="n">monit</span>
<span class="lineno">23</span><span class="kn">from</span> <span class="nn">labml_helpers.datasets.text</span> <span class="kn">import</span> <span class="n">TextFileDataset</span><span class="p">,</span> <span class="n">TextDataset</span>
<span class="lineno">24</span><span class="kn">from</span> <span class="nn">labml_nn.transformers.retro.database</span> <span class="kn">import</span> <span class="n">RetroIndex</span></pre></div>
</div>
</div>
<div class='section' id='section-1'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-1'>#</a>
</div>
<h2>දත්තසමුදාය සාදන්න</h2>
<ul><li><code class="highlight"><span></span><span class="n">chunk_len</span></code>
කුටියේ දිග වේ </li>
<li><code class="highlight"><span></span><span class="n">chunks_per_sample</span></code>
පුහුණු නියැදියකට කුට්ටි ගණන </li>
<li><code class="highlight"><span></span><span class="n">skip_range</span></code>
සාම්පල දෙකක් අතර මඟ හැරීමට උපරිම අක්ෂර ගණන වේ. අපි මඟ කිහිපයක් චරිත අතර සාම්පල බවට වග බලා ගන්න සාම්පල පෙලගැසී නොමැත සමග හොඳින් කැබලි දී <a href="database.html">දත්ත සමුදාය</a></li></ul>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">27</span><span class="k">def</span> <span class="nf">build_dataset</span><span class="p">(</span><span class="n">chunk_len</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">16</span><span class="p">,</span> <span class="n">chunks_per_sample</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">32</span><span class="p">,</span> <span class="n">skip_range</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">8</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-2'>
<div class='docs'>
<div class='section-link'>
<a href='#section-2'>#</a>
</div>
<p>පෙළගොනුව පූරණය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">39</span> <span class="n">dataset</span> <span class="o">=</span> <span class="n">TextFileDataset</span><span class="p">(</span>
<span class="lineno">40</span> <span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;tiny_shakespeare.txt&#39;</span><span class="p">,</span>
<span class="lineno">41</span> <span class="nb">list</span><span class="p">,</span>
<span class="lineno">42</span> <span class="n">url</span><span class="o">=</span><span class="s1">&#39;https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt&#39;</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-3'>
<div class='docs'>
<div class='section-link'>
<a href='#section-3'>#</a>
</div>
<p>එහිපුහුණු කොටස </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">45</span> <span class="n">text</span> <span class="o">=</span> <span class="n">dataset</span><span class="o">.</span><span class="n">train</span></pre></div>
</div>
</div>
<div class='section' id='section-4'>
<div class='docs'>
<div class='section-link'>
<a href='#section-4'>#</a>
</div>
<p>අසල්වැසියන්ලබා ගැනීම සඳහා දර්ශකය පටවන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">48</span> <span class="n">index</span> <span class="o">=</span> <span class="n">RetroIndex</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-5'>
<div class='docs'>
<div class='section-link'>
<a href='#section-5'>#</a>
</div>
<p>ආදානනියැදි ඕෆ්සෙට් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">51</span> <span class="n">sample_offsets</span> <span class="o">=</span> <span class="p">[]</span></pre></div>
</div>
</div>
<div class='section' id='section-6'>
<div class='docs'>
<div class='section-link'>
<a href='#section-6'>#</a>
</div>
<p>පෙළසඳහා කර්සරය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">53</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="lineno">54</span> <span class="k">while</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-7'>
<div class='docs'>
<div class='section-link'>
<a href='#section-7'>#</a>
</div>
<p>අසල්වැසියන්සමඟ පෙලගැසී නොමැති බවට වග බලා ගැනීම සඳහා චරිත කිහිපයක් මඟ හරින්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">56</span> <span class="n">skip</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="n">skip_range</span><span class="p">)</span>
<span class="lineno">57</span> <span class="n">i</span> <span class="o">+=</span> <span class="n">skip</span></pre></div>
</div>
</div>
<div class='section' id='section-8'>
<div class='docs'>
<div class='section-link'>
<a href='#section-8'>#</a>
</div>
<p>අපිපෙළෙහි අවසානයට පැමිණ ඇත්නම් නවත්වන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">60</span> <span class="k">if</span> <span class="n">i</span> <span class="o">+</span> <span class="n">chunks_per_sample</span> <span class="o">*</span> <span class="n">chunk_len</span> <span class="o">&gt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="lineno">61</span> <span class="k">break</span></pre></div>
</div>
</div>
<div class='section' id='section-9'>
<div class='docs'>
<div class='section-link'>
<a href='#section-9'>#</a>
</div>
<p>ඕෆ්සෙට්එකතු කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">64</span> <span class="n">sample_offsets</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-10'>
<div class='docs'>
<div class='section-link'>
<a href='#section-10'>#</a>
</div>
<p>කර්සරයවැඩි කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">67</span> <span class="n">i</span> <span class="o">+=</span> <span class="n">chunks_per_sample</span> <span class="o">*</span> <span class="n">chunk_len</span></pre></div>
</div>
</div>
<div class='section' id='section-11'>
<div class='docs'>
<div class='section-link'>
<a href='#section-11'>#</a>
</div>
<p>සාම්පලසඳහා </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">70</span> <span class="n">samples</span> <span class="o">=</span> <span class="p">[]</span></pre></div>
</div>
</div>
<div class='section' id='section-12'>
<div class='docs'>
<div class='section-link'>
<a href='#section-12'>#</a>
</div>
<p>නියැදිඕෆ්සෙට් හරහා නැවත කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">72</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">monit</span><span class="o">.</span><span class="n">iterate</span><span class="p">(</span><span class="s1">&#39;Gather Neighbors&#39;</span><span class="p">,</span> <span class="n">sample_offsets</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-13'>
<div class='docs'>
<div class='section-link'>
<a href='#section-13'>#</a>
</div>
<p>අමතරචරිතයක් ඇතුළුව නියැදිය ලබා ගන්න (අනාවැකිය සඳහා) </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">74</span> <span class="n">sample</span> <span class="o">=</span> <span class="n">text</span><span class="p">[</span><span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="n">chunks_per_sample</span> <span class="o">*</span> <span class="n">chunk_len</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-14'>
<div class='docs'>
<div class='section-link'>
<a href='#section-14'>#</a>
</div>
<p>ආදානය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">76</span> <span class="n">src</span> <span class="o">=</span> <span class="n">sample</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-15'>
<div class='docs'>
<div class='section-link'>
<a href='#section-15'>#</a>
</div>
<p>එයකුට්ටි වලට කඩන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">78</span> <span class="n">chunks</span> <span class="o">=</span> <span class="p">[</span><span class="n">src</span><span class="p">[</span><span class="n">j</span><span class="p">:</span><span class="n">j</span> <span class="o">+</span> <span class="n">chunk_len</span><span class="p">]</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">src</span><span class="p">),</span> <span class="n">chunk_len</span><span class="p">)]</span></pre></div>
</div>
</div>
<div class='section' id='section-16'>
<div class='docs'>
<div class='section-link'>
<a href='#section-16'>#</a>
</div>
<p>කුට්ටියඕෆ්සෙට් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">80</span> <span class="n">chunk_offsets</span> <span class="o">=</span> <span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="n">i</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">src</span><span class="p">),</span> <span class="n">chunk_len</span><span class="p">)]</span></pre></div>
</div>
</div>
<div class='section' id='section-17'>
<div class='docs'>
<div class='section-link'>
<a href='#section-17'>#</a>
</div>
<p>ළඟමඅසල්වැසියන් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">83</span> <span class="n">neighbor_offsets</span> <span class="o">=</span> <span class="n">index</span><span class="p">(</span><span class="n">chunks</span><span class="p">,</span> <span class="n">chunk_offsets</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-18'>
<div class='docs'>
<div class='section-link'>
<a href='#section-18'>#</a>
</div>
<p>අසල්වැසියාගේපෙළ ලබා ගන්න. අසල්වැසියාගේ දිග මෙන් දෙගුණයක් වේ <code class="highlight"><span></span><span class="n">chunk_len</span></code>
</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">86</span> <span class="n">neighbors</span> <span class="o">=</span> <span class="p">[[</span><span class="n">text</span><span class="p">[</span><span class="n">j</span><span class="p">:</span> <span class="n">j</span> <span class="o">+</span> <span class="n">chunk_len</span> <span class="o">*</span> <span class="mi">2</span><span class="p">]</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">n_off</span><span class="p">]</span> <span class="k">for</span> <span class="n">n_off</span> <span class="ow">in</span> <span class="n">neighbor_offsets</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-19'>
<div class='docs'>
<div class='section-link'>
<a href='#section-19'>#</a>
</div>
<p>සාම්පලලැයිස්තුවට එකතු කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">89</span> <span class="n">samples</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">sample</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="n">sample</span><span class="p">[</span><span class="mi">1</span><span class="p">:],</span> <span class="n">neighbors</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-20'>
<div class='docs'>
<div class='section-link'>
<a href='#section-20'>#</a>
</div>
<p>JSONහි සාම්පල සුරකින්න. අපගේ දත්ත කට්ටලය කුඩා බැවින් අපට සංකීර්ණ දත්ත කට්ටල ගබඩා කිරීමේ යාන්ත්රණ හෝ පූර්ව ටෝකීකරණය භාවිතා කිරීමට අවශ්ය නොවේ. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">94</span> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;retro_train_dataset.json&#39;</span><span class="p">),</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="lineno">95</span> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">samples</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-21'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-21'>#</a>
</div>
<h2>දත්තකට්ටලය</h2>
<p>විසින්නිර්මාණය කරන ලද දත්ත කට්ටලය පටවන PyTorch දත්ත කට්ටලය මෙයයි <code class="highlight"><span></span><span class="n">build_dataset</span></code>
. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">98</span><span class="k">class</span> <span class="nc">Dataset</span><span class="p">(</span><span class="n">PyTorchDataset</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-22'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-22'>#</a>
</div>
<ul><li><code class="highlight"><span></span><span class="n">file_path</span></code>
සුරකින ලද JSON ගොනුවේ මාර්ගයයි </li>
</ul><li><code class="highlight"><span></span><span class="n">tds</span></code>
වේ <code class="highlight"><span></span><span class="n">TextDataset</span></code>
</li>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">105</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_path</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span> <span class="n">tds</span><span class="p">:</span> <span class="n">TextDataset</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-23'>
<div class='docs'>
<div class='section-link'>
<a href='#section-23'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">111</span> <span class="bp">self</span><span class="o">.</span><span class="n">tds</span> <span class="o">=</span> <span class="n">tds</span></pre></div>
</div>
</div>
<div class='section' id='section-24'>
<div class='docs'>
<div class='section-link'>
<a href='#section-24'>#</a>
</div>
<p>සාම්පලපූරණය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">113</span> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">file_path</span><span class="p">),</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="lineno">114</span> <span class="bp">self</span><span class="o">.</span><span class="n">samples</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">())</span></pre></div>
</div>
</div>
<div class='section' id='section-25'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-25'>#</a>
</div>
<p> සාම්පලගණන</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">116</span> <span class="k">def</span> <span class="fm">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-26'>
<div class='docs'>
<div class='section-link'>
<a href='#section-26'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">120</span> <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">samples</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-27'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-27'>#</a>
</div>
<p> නියැදියක්ලබා ගන්න</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">122</span> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">idx</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-28'>
<div class='docs'>
<div class='section-link'>
<a href='#section-28'>#</a>
</div>
<p>නියැදියලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">127</span> <span class="n">s</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">samples</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-29'>
<div class='docs'>
<div class='section-link'>
<a href='#section-29'>#</a>
</div>
<p>ටෝකනයිස්කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">129</span> <span class="n">src</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tds</span><span class="o">.</span><span class="n">text_to_i</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="lineno">130</span> <span class="n">tgt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tds</span><span class="o">.</span><span class="n">text_to_i</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="lineno">131</span> <span class="n">neighbors</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">([</span><span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">tds</span><span class="o">.</span><span class="n">text_to_i</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">])</span> <span class="k">for</span> <span class="n">chunks</span> <span class="ow">in</span> <span class="n">s</span><span class="p">[</span><span class="mi">2</span><span class="p">]])</span></pre></div>
</div>
</div>
<div class='section' id='section-30'>
<div class='docs'>
<div class='section-link'>
<a href='#section-30'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">133</span> <span class="k">return</span> <span class="n">src</span><span class="p">,</span> <span class="n">tgt</span><span class="p">,</span> <span class="n">neighbors</span></pre></div>
</div>
</div>
<div class='section' id='section-31'>
<div class='docs'>
<div class='section-link'>
<a href='#section-31'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">136</span><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
<span class="lineno">137</span> <span class="n">build_dataset</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='footer'>
<a href="https://papers.labml.ai">Trending Research Papers</a>
<a href="https://labml.ai">labml.ai</a>
</div>
</div>
<script src=../../interactive.js?v=1"></script>
<script>
function handleImages() {
var images = document.querySelectorAll('p>img')
for (var i = 0; i < images.length; ++i) {
handleImage(images[i])
}
}
function handleImage(img) {
img.parentElement.style.textAlign = 'center'
var modal = document.createElement('div')
modal.id = 'modal'
var modalContent = document.createElement('div')
modal.appendChild(modalContent)
var modalImage = document.createElement('img')
modalContent.appendChild(modalImage)
var span = document.createElement('span')
span.classList.add('close')
span.textContent = 'x'
modal.appendChild(span)
img.onclick = function () {
console.log('clicked')
document.body.appendChild(modal)
modalImage.src = img.src
}
span.onclick = function () {
document.body.removeChild(modal)
}
}
handleImages()
</script>
</body>
</html>
+138
View File
@@ -0,0 +1,138 @@
<!DOCTYPE html>
<html lang="si">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="මෙය PyTorch ක්රියාත්මක කිරීම/නිබන්ධනය කඩදාසි ට්රිලියන ගණනක ටෝකන වලින් ලබා ගැනීමෙන් භාෂා ආකෘති වැඩි දියුණු කිරීම. එය පෙළ කැබලි වල ප්රධාන වටිනාකම් දත්ත සමුදායක් ගොඩනඟන අතර අනාවැකි පළ කිරීමේදී ඒවා භාවිතා කරයි."/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:image:src" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta name="twitter:title" content="නැවත ලබා ගැනීම-වැඩි දියුණු කළ ට්රාන්ස්ෆෝමර් (රෙට්රෝ)"/>
<meta name="twitter:description" content="මෙය PyTorch ක්රියාත්මක කිරීම/නිබන්ධනය කඩදාසි ට්රිලියන ගණනක ටෝකන වලින් ලබා ගැනීමෙන් භාෂා ආකෘති වැඩි දියුණු කිරීම. එය පෙළ කැබලි වල ප්රධාන වටිනාකම් දත්ත සමුදායක් ගොඩනඟන අතර අනාවැකි පළ කිරීමේදී ඒවා භාවිතා කරයි."/>
<meta name="twitter:site" content="@labmlai"/>
<meta name="twitter:creator" content="@labmlai"/>
<meta property="og:url" content="https://nn.labml.ai/transformers/retro/index.html"/>
<meta property="og:title" content="නැවත ලබා ගැනීම-වැඩි දියුණු කළ ට්රාන්ස්ෆෝමර් (රෙට්රෝ)"/>
<meta property="og:image" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta property="og:site_name" content="නැවත ලබා ගැනීම-වැඩි දියුණු කළ ට්රාන්ස්ෆෝමර් (රෙට්රෝ)"/>
<meta property="og:type" content="object"/>
<meta property="og:title" content="නැවත ලබා ගැනීම-වැඩි දියුණු කළ ට්රාන්ස්ෆෝමර් (රෙට්රෝ)"/>
<meta property="og:description" content="මෙය PyTorch ක්රියාත්මක කිරීම/නිබන්ධනය කඩදාසි ට්රිලියන ගණනක ටෝකන වලින් ලබා ගැනීමෙන් භාෂා ආකෘති වැඩි දියුණු කිරීම. එය පෙළ කැබලි වල ප්රධාන වටිනාකම් දත්ත සමුදායක් ගොඩනඟන අතර අනාවැකි පළ කිරීමේදී ඒවා භාවිතා කරයි."/>
<title>නැවත ලබා ගැනීම-වැඩි දියුණු කළ ට්රාන්ස්ෆෝමර් (රෙට්රෝ)</title>
<link rel="shortcut icon" href="/icon.png"/>
<link rel="stylesheet" href="../../pylit.css?v=1">
<link rel="canonical" href="https://nn.labml.ai/transformers/retro/index.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css" integrity="sha384-zTROYFVGOfTw7JV7KUu8udsvW2fx4lWOsCEDqhBreBwlHI4ioVRtmIvEThzJHGET" crossorigin="anonymous">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4V3HC8HBLH"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-4V3HC8HBLH');
</script>
</head>
<body>
<div id='container'>
<div id="background"></div>
<div class='section'>
<div class='docs'>
<p>
<a class="parent" href="/">home</a>
<a class="parent" href="../index.html">transformers</a>
<a class="parent" href="index.html">retro</a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations" target="_blank">
<img alt="Github"
src="https://img.shields.io/github/stars/labmlai/annotated_deep_learning_paper_implementations?style=social"
style="max-width:100%;"/></a>
<a href="https://twitter.com/labmlai" rel="nofollow" target="_blank">
<img alt="Twitter"
src="https://img.shields.io/twitter/follow/labmlai?style=social"
style="max-width:100%;"/></a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/transformers/retro/__init__.py" target="_blank">
View code on Github</a>
</p>
</div>
</div>
<div class='section' id='section-0'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-0'>#</a>
</div>
<h1>නැවතලබා ගැනීම-වැඩි දියුණු කළ ට්රාන්ස්ෆෝමර් (රෙට්රෝ)</h1>
<p>මෙය <a href="https://pytorch.org">PyTorch</a> ක්රියාත්මක කිරීමකි කඩදාසි <a href="https://papers.labml.ai/paper/2112.04426">ට්රිලියන ගණනක ටෝකන වලින් ලබා ගැනීමෙන් භාෂා ආකෘති වැඩි දියුණු කිරීම</a> . </p>
<p>එයපෙළ කුට්ටි පිළිබඳ දත්ත සමුදායක් ගොඩනඟයි. එය යතුරු කැබලි වල BERT කාවැද්දීම් විසින් සුචිගත කරනු ලබන ප්රධාන අගය දත්ත සමුදායකි. මෙම කාවැද්දීම් ගණනය කිරීම සඳහා ඔවුන් ශීත කළ පෙර පුහුණු කළ BERT ආකෘතියක් භාවිතා කරයි. අගයන් යනු අනුරූප කුට්ටි සහ එම කුට්ටිය ඉදිරියට යන පෙළ සමාන දිගකි. </p>
<p>එවිටආකෘතිය මෙම දත්ත ගබඩාවෙන් ආකෘතියට ආදානයට සමාන (ආසන්නතම අසල්වැසියන්) පෙළ නැවත ලබා ගනී. ප්රතිදානය පුරෝකථනය කිරීම සඳහා මෙම නැවත ලබා ගත් පෙළ භාවිතා කරයි. </p>
<p>අපිනැවත ලබා ගැනීම සඳහා ශීත කළ BERT ආකෘතියක් භාවිතා කරන බැවින් පුහුණු දත්ත සමුදාය සඳහා ආසන්නතම අසල්වැසියන් පූර්ව ගණනය කළ හැකිය. මෙය පුහුණු ක්රියාවලිය වේගවත් කරයි. </p>
<p>සංරචක:</p>
<ul><li><a href="bert_embeddings.html">BERT කාවැද්දීම්</a>: පෙළ කුට්ටි BERT කාවැද්දීම් ලබා ගැනීමට කේතය. </li>
<li><a href="database.html">ප්රධාන අගය දත්ත සමුදාය</a>: කුට්ටි තැනීම සහ ලබා ගැනීම </li>
<li><a href="model.html">ආකෘතිය</a> </li>
<li><a href="dataset.html">දත්ත කට්ටලය</a>: ආසන්නතම අසල්වැසියන් පූර්ව ගණනය කරන්න </li>
<li><a href="train.html">පුහුණු කේතය</a></li></ul>
<p><a href="https://app.labml.ai/run/3113dd3ea1e711ec85ee295d18534021"><img alt="View Run" src="https://img.shields.io/badge/labml-experiment-brightgreen"></a></p>
</div>
<div class='code'>
<div class="highlight"><pre></pre></div>
</div>
</div>
<div class='footer'>
<a href="https://papers.labml.ai">Trending Research Papers</a>
<a href="https://labml.ai">labml.ai</a>
</div>
</div>
<script src=../../interactive.js?v=1"></script>
<script>
function handleImages() {
var images = document.querySelectorAll('p>img')
for (var i = 0; i < images.length; ++i) {
handleImage(images[i])
}
}
function handleImage(img) {
img.parentElement.style.textAlign = 'center'
var modal = document.createElement('div')
modal.id = 'modal'
var modalContent = document.createElement('div')
modal.appendChild(modalContent)
var modalImage = document.createElement('img')
modalContent.appendChild(modalImage)
var span = document.createElement('span')
span.classList.add('close')
span.textContent = 'x'
modal.appendChild(span)
img.onclick = function () {
console.log('clicked')
document.body.appendChild(modal)
modalImage.src = img.src
}
span.onclick = function () {
document.body.removeChild(modal)
}
}
handleImages()
</script>
</body>
</html>
File diff suppressed because one or more lines are too long
+857
View File
@@ -0,0 +1,857 @@
<!DOCTYPE html>
<html lang="si">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="කුඩා ෂේක්ස්පියර් දත්ත කට්ටලය සමඟ පුහුණු RETRO ආකෘතිය"/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:image:src" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta name="twitter:title" content="රෙට්රෝ පුහුණුව"/>
<meta name="twitter:description" content="කුඩා ෂේක්ස්පියර් දත්ත කට්ටලය සමඟ පුහුණු RETRO ආකෘතිය"/>
<meta name="twitter:site" content="@labmlai"/>
<meta name="twitter:creator" content="@labmlai"/>
<meta property="og:url" content="https://nn.labml.ai/transformers/retro/train.html"/>
<meta property="og:title" content="රෙට්රෝ පුහුණුව"/>
<meta property="og:image" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta property="og:site_name" content="රෙට්රෝ පුහුණුව"/>
<meta property="og:type" content="object"/>
<meta property="og:title" content="රෙට්රෝ පුහුණුව"/>
<meta property="og:description" content="කුඩා ෂේක්ස්පියර් දත්ත කට්ටලය සමඟ පුහුණු RETRO ආකෘතිය"/>
<title>රෙට්රෝ පුහුණුව</title>
<link rel="shortcut icon" href="/icon.png"/>
<link rel="stylesheet" href="../../pylit.css?v=1">
<link rel="canonical" href="https://nn.labml.ai/transformers/retro/train.html"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css" integrity="sha384-zTROYFVGOfTw7JV7KUu8udsvW2fx4lWOsCEDqhBreBwlHI4ioVRtmIvEThzJHGET" crossorigin="anonymous">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4V3HC8HBLH"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-4V3HC8HBLH');
</script>
</head>
<body>
<div id='container'>
<div id="background"></div>
<div class='section'>
<div class='docs'>
<p>
<a class="parent" href="/">home</a>
<a class="parent" href="../index.html">transformers</a>
<a class="parent" href="index.html">retro</a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations" target="_blank">
<img alt="Github"
src="https://img.shields.io/github/stars/labmlai/annotated_deep_learning_paper_implementations?style=social"
style="max-width:100%;"/></a>
<a href="https://twitter.com/labmlai" rel="nofollow" target="_blank">
<img alt="Twitter"
src="https://img.shields.io/twitter/follow/labmlai?style=social"
style="max-width:100%;"/></a>
</p>
<p>
<a href="https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/transformers/retro/train.py" target="_blank">
View code on Github</a>
</p>
</div>
</div>
<div class='section' id='section-0'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-0'>#</a>
</div>
<h1>රෙට්රෝපුහුණුව</h1>
<p>මෙය <a href="index.html">RETRO</a>සඳහා පුහුණු කේතය වේ. </p>
<p><a href="https://app.labml.ai/run/3113dd3ea1e711ec85ee295d18534021"><img alt="View Run" src="https://img.shields.io/badge/labml-experiment-brightgreen"></a></p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">16</span><span></span><span class="kn">import</span> <span class="nn">torch</span>
<span class="lineno">17</span><span class="kn">from</span> <span class="nn">torch</span> <span class="kn">import</span> <span class="n">nn</span>
<span class="lineno">18</span><span class="kn">from</span> <span class="nn">torch.utils.data</span> <span class="kn">import</span> <span class="n">DataLoader</span><span class="p">,</span> <span class="n">RandomSampler</span>
<span class="lineno">19</span>
<span class="lineno">20</span><span class="kn">from</span> <span class="nn">labml</span> <span class="kn">import</span> <span class="n">monit</span><span class="p">,</span> <span class="n">lab</span><span class="p">,</span> <span class="n">tracker</span><span class="p">,</span> <span class="n">experiment</span><span class="p">,</span> <span class="n">logger</span>
<span class="lineno">21</span><span class="kn">from</span> <span class="nn">labml.logger</span> <span class="kn">import</span> <span class="n">Text</span>
<span class="lineno">22</span><span class="kn">from</span> <span class="nn">labml_helpers.datasets.text</span> <span class="kn">import</span> <span class="n">TextFileDataset</span>
<span class="lineno">23</span><span class="kn">from</span> <span class="nn">labml_nn.optimizers.noam</span> <span class="kn">import</span> <span class="n">Noam</span>
<span class="lineno">24</span><span class="kn">from</span> <span class="nn">labml_nn.transformers.retro</span> <span class="kn">import</span> <span class="n">model</span> <span class="k">as</span> <span class="n">retro</span>
<span class="lineno">25</span><span class="kn">from</span> <span class="nn">labml_nn.transformers.retro.dataset</span> <span class="kn">import</span> <span class="n">Dataset</span><span class="p">,</span> <span class="n">RetroIndex</span>
<span class="lineno">26</span><span class="kn">from</span> <span class="nn">labml_nn.transformers.retro.model</span> <span class="kn">import</span> <span class="n">RetroModel</span><span class="p">,</span> <span class="n">NearestNeighborEncoder</span></pre></div>
</div>
</div>
<div class='section' id='section-1'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-1'>#</a>
</div>
<h2>නියැදිකරු</h2>
<p>මෙමපන්තිය ආකෘතියකින් කෑදරකමින් සාම්පල. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">29</span><span class="k">class</span> <span class="nc">Sampler</span><span class="p">:</span></pre></div>
</div>
</div>
<div class='section' id='section-2'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-2'>#</a>
</div>
<ul><li><code class="highlight"><span></span><span class="n">device</span></code>
ආකෘතියේ උපාංගය වේ </li>
<li><code class="highlight"><span></span><span class="n">model</span></code>
<a href="retro.html">රෙට්රෝ ප්රකාරය</a> </li>
<li><code class="highlight"><span></span><span class="n">tds</span></code>
යනු පෙළ දත්ත සමුදාය (අසල්වැසියා කුට්ටි ලබා ගැනීමට භාවිතා කරයි) </li>
<li><code class="highlight"><span></span><span class="n">chunk_len</span></code>
යනු කුට්ටියක දිග</li></ul>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">36</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">model</span><span class="p">:</span> <span class="n">retro</span><span class="o">.</span><span class="n">RetroModel</span><span class="p">,</span> <span class="n">tds</span><span class="p">:</span> <span class="n">TextFileDataset</span><span class="p">,</span> <span class="n">chunk_len</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-3'>
<div class='docs'>
<div class='section-link'>
<a href='#section-3'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">43</span> <span class="bp">self</span><span class="o">.</span><span class="n">chunk_len</span> <span class="o">=</span> <span class="n">chunk_len</span>
<span class="lineno">44</span> <span class="bp">self</span><span class="o">.</span><span class="n">tds</span> <span class="o">=</span> <span class="n">tds</span>
<span class="lineno">45</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span>
<span class="lineno">46</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">=</span> <span class="n">device</span></pre></div>
</div>
</div>
<div class='section' id='section-4'>
<div class='docs'>
<div class='section-link'>
<a href='#section-4'>#</a>
</div>
<p><a href="database.html">රෙට්රෝ දර්ශකය</a> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">49</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="n">RetroIndex</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-5'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-5'>#</a>
</div>
<h3>ලබාදී ඇති කුට්ටියක ළඟම අසල්වැසියන් ලබා ගන්න</h3>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">51</span> <span class="k">def</span> <span class="nf">retrieve_nearest_neighbours</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">chunk</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-6'>
<div class='docs'>
<div class='section-link'>
<a href='#section-6'>#</a>
</div>
<p>ළඟමඅසල්වාසීන්ගේ හිලව් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">57</span> <span class="n">neighbor_offsets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="p">([</span><span class="n">chunk</span><span class="p">],</span> <span class="kc">None</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-7'>
<div class='docs'>
<div class='section-link'>
<a href='#section-7'>#</a>
</div>
<p>අසල්වැසියන්ලබා ගන්න (අසල්වැසියාගේ දිග සමාන <code class="highlight"><span></span><span class="n">chunk_len</span> <span class="o">*</span> <span class="mi">2</span></code>
) </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">60</span> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tds</span><span class="o">.</span><span class="n">train</span>
<span class="lineno">61</span> <span class="n">neighbors</span> <span class="o">=</span> <span class="p">[</span><span class="n">text</span><span class="p">[</span><span class="n">j</span><span class="p">:</span> <span class="n">j</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">chunk_len</span> <span class="o">*</span> <span class="mi">2</span><span class="p">]</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">neighbor_offsets</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span></pre></div>
</div>
</div>
<div class='section' id='section-8'>
<div class='docs'>
<div class='section-link'>
<a href='#section-8'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">64</span> <span class="k">return</span> <span class="n">neighbors</span></pre></div>
</div>
</div>
<div class='section' id='section-9'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-9'>#</a>
</div>
<h3>ලබාදී ඇති විමසුමෙන් නියැදි පෙළ</h3>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">66</span> <span class="k">def</span> <span class="nf">sample</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">sample_len</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-10'>
<div class='docs'>
<div class='section-link'>
<a href='#section-10'>#</a>
</div>
<p>ආසන්නතමඅසල්වැසියන් නූල් ලෙස ගබඩා කිරීම </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">72</span> <span class="n">neighbors_str</span> <span class="o">=</span> <span class="p">[]</span></pre></div>
</div>
</div>
<div class='section' id='section-11'>
<div class='docs'>
<div class='section-link'>
<a href='#section-11'>#</a>
</div>
<p>නියැදිපෙළ </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">75</span> <span class="n">sampled</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span></pre></div>
</div>
</div>
<div class='section' id='section-12'>
<div class='docs'>
<div class='section-link'>
<a href='#section-12'>#</a>
</div>
<p>නියැදි <code class="highlight"><span></span><span class="n">sample_len</span></code>
ටෝකන </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">78</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">sample_len</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-13'>
<div class='docs'>
<div class='section-link'>
<a href='#section-13'>#</a>
</div>
<p>අපදැනටමත් ලබා ගෙන ඇති ප්රමාණයට වඩා වැඩි නියැදි කුට්ටි තිබේ නම්, අසල්වැසියන් නැවත ලබා ගත යුතුය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">81</span> <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="n">neighbors_str</span><span class="p">)</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span> <span class="o">//</span> <span class="bp">self</span><span class="o">.</span><span class="n">chunk_len</span><span class="p">:</span></pre></div>
</div>
</div>
<div class='section' id='section-14'>
<div class='docs'>
<div class='section-link'>
<a href='#section-14'>#</a>
</div>
<p>අපඅසල්වැසියන් ලබා නොගත් අවසාන කුට්ටිය ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">83</span> <span class="n">off</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">neighbors_str</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">chunk_len</span>
<span class="lineno">84</span> <span class="n">chunk</span> <span class="o">=</span> <span class="n">prompt</span><span class="p">[</span><span class="n">off</span><span class="p">:</span> <span class="n">off</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">chunk_len</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-15'>
<div class='docs'>
<div class='section-link'>
<a href='#section-15'>#</a>
</div>
<p>ළඟමඅසල්වැසියන් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">86</span> <span class="n">neighbors_str</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">retrieve_nearest_neighbours</span><span class="p">(</span><span class="n">chunk</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-16'>
<div class='docs'>
<div class='section-link'>
<a href='#section-16'>#</a>
</div>
<p>ආදානයටෝකෙන්කරණය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">89</span> <span class="n">src</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tds</span><span class="o">.</span><span class="n">text_to_i</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-17'>
<div class='docs'>
<div class='section-link'>
<a href='#section-17'>#</a>
</div>
<p>ලබාගත් අසල්වැසියන් ටෝකීස් කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">91</span> <span class="n">neighbors</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">([</span><span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">tds</span><span class="o">.</span><span class="n">text_to_i</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">chunk</span><span class="p">])</span> <span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="n">neighbors_str</span><span class="p">])</span></pre></div>
</div>
</div>
<div class='section' id='section-18'>
<div class='docs'>
<div class='section-link'>
<a href='#section-18'>#</a>
</div>
<p>ආකෘතියටසමාන උපාංගයකට ඒවා ගෙනයන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">94</span> <span class="n">src</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">)</span>
<span class="lineno">95</span> <span class="n">neighbors</span> <span class="o">=</span> <span class="n">neighbors</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-19'>
<div class='docs'>
<div class='section-link'>
<a href='#section-19'>#</a>
</div>
<p>ආදර්ශප්රතිදානය ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">98</span> <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">(</span><span class="n">src</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:],</span> <span class="n">neighbors</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:,</span> <span class="p">:])</span></pre></div>
</div>
</div>
<div class='section' id='section-20'>
<div class='docs'>
<div class='section-link'>
<a href='#section-20'>#</a>
</div>
<p>කෑදරකමින්අවසාන ටෝකනය සාම්පලය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">101</span> <span class="n">token</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="p">:]</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">dim</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-21'>
<div class='docs'>
<div class='section-link'>
<a href='#section-21'>#</a>
</div>
<p>නියැදිටෝකන් පෙළ විමසුමට සහ නියැදි පෙළට එක් කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">104</span> <span class="n">prompt</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tds</span><span class="o">.</span><span class="n">itos</span><span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">item</span><span class="p">()]</span>
<span class="lineno">105</span> <span class="n">sampled</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tds</span><span class="o">.</span><span class="n">itos</span><span class="p">[</span><span class="n">token</span><span class="o">.</span><span class="n">item</span><span class="p">()]</span></pre></div>
</div>
</div>
<div class='section' id='section-22'>
<div class='docs'>
<div class='section-link'>
<a href='#section-22'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">108</span> <span class="k">return</span> <span class="n">sampled</span></pre></div>
</div>
</div>
<div class='section' id='section-23'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-23'>#</a>
</div>
<h2>රෙට්රොපුහුණුකරු</h2>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">111</span><span class="k">class</span> <span class="nc">Trainer</span><span class="p">:</span></pre></div>
</div>
</div>
<div class='section' id='section-24'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-24'>#</a>
</div>
<ul><li><code class="highlight"><span></span><span class="n">device</span></code>
ආකෘතියේ උපාංගය වේ </li>
<li><code class="highlight"><span></span><span class="n">model</span></code>
<a href="retro.html">රෙට්රෝ ප්රකාරය</a> </li>
<li><code class="highlight"><span></span><span class="n">dataloader</span></code>
<a href="dataset.html">පෙර ලබා ගත් අසල්වැසියන් සමඟ දත්ත කට්ටලය සඳහා දත්ත සමුදාය වේ</a> </li>
<li><code class="highlight"><span></span><span class="n">optimizer</span></code>
ප්රශස්තකරණය වේ</li></ul>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">116</span> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">device</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">,</span> <span class="n">model</span><span class="p">:</span> <span class="n">retro</span><span class="o">.</span><span class="n">RetroModel</span><span class="p">,</span>
<span class="lineno">117</span> <span class="n">dataloader</span><span class="p">:</span> <span class="n">DataLoader</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Optimizer</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-25'>
<div class='docs'>
<div class='section-link'>
<a href='#section-25'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">124</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span> <span class="o">=</span> <span class="n">optimizer</span>
<span class="lineno">125</span> <span class="bp">self</span><span class="o">.</span><span class="n">device</span> <span class="o">=</span> <span class="n">device</span>
<span class="lineno">126</span> <span class="bp">self</span><span class="o">.</span><span class="n">dataloader</span> <span class="o">=</span> <span class="n">dataloader</span>
<span class="lineno">127</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span>
<span class="lineno">128</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_func</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">CrossEntropyLoss</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-26'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-26'>#</a>
</div>
<h3>එපෝච්සඳහා ආකෘතිය පුහුණු කරන්න</h3>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">130</span> <span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-27'>
<div class='docs'>
<div class='section-link'>
<a href='#section-27'>#</a>
</div>
<p>පුහුණුදත්ත හරහා නැවත භාවිතා කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">136</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="n">tgt</span><span class="p">,</span> <span class="n">neighbors</span><span class="p">)</span> <span class="ow">in</span> <span class="n">monit</span><span class="o">.</span><span class="n">enum</span><span class="p">(</span><span class="s1">&#39;Train&#39;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dataloader</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-28'>
<div class='docs'>
<div class='section-link'>
<a href='#section-28'>#</a>
</div>
<p>උපාංගයවෙත දත්ත ගෙනයන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">138</span> <span class="n">src</span><span class="p">,</span> <span class="n">tgt</span><span class="p">,</span> <span class="n">neighbors</span> <span class="o">=</span> <span class="n">src</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">),</span> <span class="n">tgt</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">),</span> <span class="n">neighbors</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">device</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-29'>
<div class='docs'>
<div class='section-link'>
<a href='#section-29'>#</a>
</div>
<p>ඉදිරිසාමාර්ථය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">141</span> <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="n">neighbors</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-30'>
<div class='docs'>
<div class='section-link'>
<a href='#section-30'>#</a>
</div>
<p>අලාභයගණනය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">143</span> <span class="n">loss</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">loss_func</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]),</span> <span class="n">tgt</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-31'>
<div class='docs'>
<div class='section-link'>
<a href='#section-31'>#</a>
</div>
<p>අනුක්රමිකඉවත් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">146</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">zero_grad</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-32'>
<div class='docs'>
<div class='section-link'>
<a href='#section-32'>#</a>
</div>
<p>පසුගාමීපාස් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">148</span> <span class="n">loss</span><span class="o">.</span><span class="n">backward</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-33'>
<div class='docs'>
<div class='section-link'>
<a href='#section-33'>#</a>
</div>
<p>ආකෘතියප්රශස්ත කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">150</span> <span class="bp">self</span><span class="o">.</span><span class="n">optimizer</span><span class="o">.</span><span class="n">step</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-34'>
<div class='docs'>
<div class='section-link'>
<a href='#section-34'>#</a>
</div>
<p>පුහුණුසංඛ්යාලේඛන සුරකින්න සහ ගෝලීය පියවර කවුන්ටරය වැඩි කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">153</span> <span class="n">tracker</span><span class="o">.</span><span class="n">save</span><span class="p">({</span><span class="s1">&#39;loss.train&#39;</span><span class="p">:</span> <span class="n">loss</span><span class="p">})</span>
<span class="lineno">154</span> <span class="n">tracker</span><span class="o">.</span><span class="n">add_global_step</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">src</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-35'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-35'>#</a>
</div>
<h2>කුඩාආකෘතියක් සාදන්න සහ පුහුණු කරන්න</h2>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">157</span><span class="k">def</span> <span class="nf">train</span><span class="p">():</span></pre></div>
</div>
</div>
<div class='section' id='section-36'>
<div class='docs'>
<div class='section-link'>
<a href='#section-36'>#</a>
</div>
<p>අත්හදාබැලීමක් සාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">163</span> <span class="n">experiment</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;retro_small&#39;</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-37'>
<div class='docs'>
<div class='section-link'>
<a href='#section-37'>#</a>
</div>
<p>GPUඋපාංගය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">166</span> <span class="n">device</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">(</span><span class="s1">&#39;cuda:0&#39;</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-38'>
<div class='docs'>
<div class='section-link'>
<a href='#section-38'>#</a>
</div>
<p>කුඩාෂේක්ස්පියර් දත්ත කට්ටලය පටවන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">169</span> <span class="n">tds</span> <span class="o">=</span> <span class="n">TextFileDataset</span><span class="p">(</span>
<span class="lineno">170</span> <span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;tiny_shakespeare.txt&#39;</span><span class="p">,</span>
<span class="lineno">171</span> <span class="nb">list</span><span class="p">,</span>
<span class="lineno">172</span> <span class="n">url</span><span class="o">=</span><span class="s1">&#39;https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt&#39;</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-39'>
<div class='docs'>
<div class='section-link'>
<a href='#section-39'>#</a>
</div>
<p><a href="dataset.html">රෙට්රෝ දත්ත කට්ටලය</a> පටවන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">175</span> <span class="n">train_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="n">lab</span><span class="o">.</span><span class="n">get_data_path</span><span class="p">()</span> <span class="o">/</span> <span class="s1">&#39;retro_train_dataset.json&#39;</span><span class="p">,</span> <span class="n">tds</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-40'>
<div class='docs'>
<div class='section-link'>
<a href='#section-40'>#</a>
</div>
<p>දත්තකාරකය සාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">178</span> <span class="n">train_dl</span> <span class="o">=</span> <span class="n">DataLoader</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">,</span>
<span class="lineno">179</span> <span class="n">batch_size</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>
<span class="lineno">180</span> <span class="n">sampler</span><span class="o">=</span><span class="n">RandomSampler</span><span class="p">(</span><span class="n">train_dataset</span><span class="p">,</span> <span class="n">replacement</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span></pre></div>
</div>
</div>
<div class='section' id='section-41'>
<div class='docs'>
<div class='section-link'>
<a href='#section-41'>#</a>
</div>
<p>අධිපරාමිතීන් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">183</span> <span class="n">chunk_len</span> <span class="o">=</span> <span class="mi">16</span>
<span class="lineno">184</span> <span class="n">d_model</span> <span class="o">=</span> <span class="mi">128</span>
<span class="lineno">185</span> <span class="n">d_ff</span> <span class="o">=</span> <span class="mi">512</span>
<span class="lineno">186</span> <span class="n">n_heads</span> <span class="o">=</span> <span class="mi">16</span>
<span class="lineno">187</span> <span class="n">d_k</span> <span class="o">=</span> <span class="mi">16</span></pre></div>
</div>
</div>
<div class='section' id='section-42'>
<div class='docs'>
<div class='section-link'>
<a href='#section-42'>#</a>
</div>
<p>ළඟමඅසල්වැසියාගේ එන්කෝඩරය සාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">190</span> <span class="n">nearest_neighbor_encoder</span> <span class="o">=</span> <span class="n">NearestNeighborEncoder</span><span class="p">(</span><span class="n">chunk_len</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="p">{</span><span class="mi">3</span><span class="p">},</span> <span class="n">d_model</span><span class="p">,</span> <span class="n">n_heads</span><span class="p">,</span> <span class="n">d_k</span><span class="p">,</span> <span class="n">d_ff</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-43'>
<div class='docs'>
<div class='section-link'>
<a href='#section-43'>#</a>
</div>
<p>ආකෘතියසාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">192</span> <span class="n">model</span> <span class="o">=</span> <span class="n">RetroModel</span><span class="p">(</span><span class="n">tds</span><span class="o">.</span><span class="n">n_tokens</span><span class="p">,</span> <span class="n">d_model</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span>
<span class="lineno">193</span> <span class="p">{</span><span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">},</span>
<span class="lineno">194</span> <span class="n">chunk_len</span><span class="p">,</span> <span class="n">n_heads</span><span class="p">,</span> <span class="n">d_k</span><span class="p">,</span> <span class="n">d_ff</span><span class="p">,</span>
<span class="lineno">195</span> <span class="n">encoder</span><span class="o">=</span><span class="n">nearest_neighbor_encoder</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-44'>
<div class='docs'>
<div class='section-link'>
<a href='#section-44'>#</a>
</div>
<p>උපාංගයවෙත ආකෘතිය ගෙනයන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">197</span> <span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-45'>
<div class='docs'>
<div class='section-link'>
<a href='#section-45'>#</a>
</div>
<p>ප්රශස්තකරණයසාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">199</span> <span class="n">optimizer</span> <span class="o">=</span> <span class="n">Noam</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">parameters</span><span class="p">(),</span> <span class="n">lr</span><span class="o">=</span><span class="mf">1.</span><span class="p">,</span> <span class="n">d_model</span><span class="o">=</span><span class="n">d_model</span><span class="p">,</span> <span class="n">warmup</span><span class="o">=</span><span class="mi">2_000</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-46'>
<div class='docs'>
<div class='section-link'>
<a href='#section-46'>#</a>
</div>
<p>සාදන්න <code class="highlight"><span></span><span class="n">Trainer</span></code>
</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">201</span> <span class="n">trainer</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span><span class="n">device</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">train_dl</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-47'>
<div class='docs'>
<div class='section-link'>
<a href='#section-47'>#</a>
</div>
<p>සාදන්න <code class="highlight"><span></span><span class="n">Sampler</span></code>
</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">203</span> <span class="n">sampler</span> <span class="o">=</span> <span class="n">Sampler</span><span class="p">(</span><span class="n">device</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">tds</span><span class="p">,</span> <span class="n">chunk_len</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-48'>
<div class='docs'>
<div class='section-link'>
<a href='#section-48'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">205</span> <span class="n">prompt</span> <span class="o">=</span> <span class="s1">&#39;&#39;&#39;Second Citizen:</span><span class="se">\n</span><span class="s1">One word, good citizens.</span><span class="se">\n\n</span><span class="s1">First Citizen:&#39;&#39;&#39;</span></pre></div>
</div>
</div>
<div class='section' id='section-49'>
<div class='docs'>
<div class='section-link'>
<a href='#section-49'>#</a>
</div>
<p>ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">208</span> <span class="n">experiment</span><span class="o">.</span><span class="n">add_pytorch_models</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="n">model</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-50'>
<div class='docs'>
<div class='section-link'>
<a href='#section-50'>#</a>
</div>
<p>අත්හදාබැලීම ආරම්භ කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">211</span> <span class="k">with</span> <span class="n">experiment</span><span class="o">.</span><span class="n">start</span><span class="p">():</span></pre></div>
</div>
</div>
<div class='section' id='section-51'>
<div class='docs'>
<div class='section-link'>
<a href='#section-51'>#</a>
</div>
<p><code class="highlight"><span></span><span class="mi">32</span></code>
Epochs සඳහා දුම්රිය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">213</span> <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="n">monit</span><span class="o">.</span><span class="n">loop</span><span class="p">(</span><span class="mi">32</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-52'>
<div class='docs'>
<div class='section-link'>
<a href='#section-52'>#</a>
</div>
<p>දුම්රිය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">215</span> <span class="n">trainer</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-53'>
<div class='docs'>
<div class='section-link'>
<a href='#section-53'>#</a>
</div>
<p>නවරේඛාවක් මුද්රණය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">217</span> <span class="n">tracker</span><span class="o">.</span><span class="n">new_line</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-54'>
<div class='docs'>
<div class='section-link'>
<a href='#section-54'>#</a>
</div>
<p>වෙතින්නියැදිය <code class="highlight"><span></span><span class="n">prompt</span></code>
</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">219</span> <span class="n">logger</span><span class="o">.</span><span class="n">log</span><span class="p">([(</span><span class="n">prompt</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">n</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">),</span> <span class="n">Text</span><span class="o">.</span><span class="n">subtle</span><span class="p">),</span>
<span class="lineno">220</span> <span class="p">(</span><span class="n">sampler</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> <span class="mi">128</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">n</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">),</span> <span class="n">Text</span><span class="o">.</span><span class="n">none</span><span class="p">)])</span></pre></div>
</div>
</div>
<div class='section' id='section-55'>
<div class='docs'>
<div class='section-link'>
<a href='#section-55'>#</a>
</div>
<p>ආකෘතිසුරකින්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">222</span> <span class="n">experiment</span><span class="o">.</span><span class="n">save_checkpoint</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-56'>
<div class='docs'>
<div class='section-link'>
<a href='#section-56'>#</a>
</div>
<p> </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">226</span><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
<span class="lineno">227</span> <span class="n">train</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='footer'>
<a href="https://papers.labml.ai">Trending Research Papers</a>
<a href="https://labml.ai">labml.ai</a>
</div>
</div>
<script src=../../interactive.js?v=1"></script>
<script>
function handleImages() {
var images = document.querySelectorAll('p>img')
for (var i = 0; i < images.length; ++i) {
handleImage(images[i])
}
}
function handleImage(img) {
img.parentElement.style.textAlign = 'center'
var modal = document.createElement('div')
modal.id = 'modal'
var modalContent = document.createElement('div')
modal.appendChild(modalContent)
var modalImage = document.createElement('img')
modalContent.appendChild(modalImage)
var span = document.createElement('span')
span.classList.add('close')
span.textContent = 'x'
modal.appendChild(span)
img.onclick = function () {
console.log('clicked')
document.body.appendChild(modal)
modalImage.src = img.src
}
span.onclick = function () {
document.body.removeChild(modal)
}
}
handleImages()
</script>
</body>
</html>