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
+228
View File
@@ -0,0 +1,228 @@
<!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="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<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="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta name="twitter:description" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta name="twitter:site" content="@labmlai"/>
<meta name="twitter:creator" content="@labmlai"/>
<meta property="og:url" content="https://nn.labml.ai/neox/evaluation/half_precision.html"/>
<meta property="og:title" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta property="og:image" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta property="og:site_name" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta property="og:type" content="object"/>
<meta property="og:title" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta property="og:description" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<title>LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය</title>
<link rel="shortcut icon" href="/icon.png"/>
<link rel="stylesheet" href="../../pylit.css?v=1">
<link rel="canonical" href="https://nn.labml.ai/neox/evaluation/half_precision.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">neox</a>
<a class="parent" href="index.html">evaluation</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/neox/evaluation/half_precision.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>LLM.INT8භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය</h1>
<p>මෙමකේතය කාර්යයන් කට්ටලයකින් භාවිතා කරමින් <a href="../index.html">ජීපීටී-නියෝක්ස්</a> ඇගයීමට ලක් කරයි. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">12</span><span></span><span class="kn">import</span> <span class="nn">argparse</span>
<span class="lineno">13</span>
<span class="lineno">14</span><span class="kn">import</span> <span class="nn">torch</span>
<span class="lineno">15</span><span class="kn">from</span> <span class="nn">torch</span> <span class="kn">import</span> <span class="n">nn</span>
<span class="lineno">16</span>
<span class="lineno">17</span><span class="kn">from</span> <span class="nn">labml_nn.neox.evaluation</span> <span class="kn">import</span> <span class="n">run_eval_harness</span>
<span class="lineno">18</span><span class="kn">from</span> <span class="nn">labml_nn.neox.model</span> <span class="kn">import</span> <span class="n">LayerGenerator</span></pre></div>
</div>
</div>
<div class='section' id='section-1'>
<div class='docs'>
<div class='section-link'>
<a href='#section-1'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">21</span><span class="k">def</span> <span class="nf">main</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">23</span> <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">()</span>
<span class="lineno">24</span>
<span class="lineno">25</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--flash&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s1">&#39;store_true&#39;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;whether to use Flash Attention&quot;</span><span class="p">)</span>
<span class="lineno">26</span>
<span class="lineno">27</span> <span class="n">opt</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</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">30</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-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">32</span> <span class="n">layers</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">LayerGenerator</span><span class="p">(</span><span class="n">is_clone_layers</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="lineno">33</span> <span class="n">filter_layers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="lineno">34</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span>
<span class="lineno">35</span> <span class="n">device</span><span class="o">=</span><span class="n">device</span><span class="p">,</span>
<span class="lineno">36</span> <span class="n">is_flash_attention</span><span class="o">=</span><span class="n">opt</span><span class="o">.</span><span class="n">flash</span><span class="p">,</span>
<span class="lineno">37</span> <span class="p">)</span><span class="o">.</span><span class="n">load</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">nn</span><span class="o">.</span><span class="n">Sequential</span></code>
ආකෘතිය සාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">40</span> <span class="n">model</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span><span class="o">*</span><span class="n">layers</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><a href="index.html">ඇගයීම් පටි</a> ධාවනය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">43</span> <span class="nb">print</span><span class="p">(</span><span class="n">run_eval_harness</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s1">&#39;half_precision&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;lambada&#39;</span><span class="p">],</span> <span class="n">device</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">47</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">48</span> <span class="n">main</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>
+950
View File
@@ -0,0 +1,950 @@
<!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="Lm-ඇගයීම-පටි හරහා NLP කාර්යයන් පිළිබඳ ආකෘතිය ඇගයීම සඳහා කේතය"/>
<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="Lm-ඇගයීම-පටි හරහා NLP කාර්යයන් පිළිබඳ ආකෘතිය ඇගයීම සඳහා කේතය"/>
<meta name="twitter:site" content="@labmlai"/>
<meta name="twitter:creator" content="@labmlai"/>
<meta property="og:url" content="https://nn.labml.ai/neox/evaluation/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="Lm-ඇගයීම-පටි හරහා NLP කාර්යයන් පිළිබඳ ආකෘතිය ඇගයීම සඳහා කේතය"/>
<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/neox/evaluation/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">neox</a>
<a class="parent" href="index.html">evaluation</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/neox/evaluation/__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://github.com/EleutherAI/lm-evaluation-harness">Eleutherai/LM-ඇගයීම්-පටි</a>පිළිබඳ ආකෘතිය පරීක්ෂා කිරීමේ කේතය මෙයයි. </p>
<ul><li><a href="half_precision.html">තනි GPU මත අර්ධ නිරවද්යතා ආකෘතියක් ඇගයීම</a></li></ul>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">15</span><span></span><span class="kn">import</span> <span class="nn">math</span>
<span class="lineno">16</span><span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">List</span>
<span class="lineno">17</span>
<span class="lineno">18</span><span class="kn">import</span> <span class="nn">torch</span>
<span class="lineno">19</span><span class="kn">import</span> <span class="nn">torch.nn.functional</span> <span class="k">as</span> <span class="nn">F</span>
<span class="lineno">20</span><span class="kn">from</span> <span class="nn">lm_eval</span> <span class="kn">import</span> <span class="n">tasks</span><span class="p">,</span> <span class="n">evaluator</span><span class="p">,</span> <span class="n">utils</span>
<span class="lineno">21</span><span class="kn">from</span> <span class="nn">lm_eval.base</span> <span class="kn">import</span> <span class="n">BaseLM</span>
<span class="lineno">22</span><span class="kn">from</span> <span class="nn">tokenizers</span> <span class="kn">import</span> <span class="n">Tokenizer</span>
<span class="lineno">23</span><span class="kn">from</span> <span class="nn">torch</span> <span class="kn">import</span> <span class="n">nn</span>
<span class="lineno">24</span><span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span>
<span class="lineno">25</span>
<span class="lineno">26</span><span class="kn">from</span> <span class="nn">labml</span> <span class="kn">import</span> <span class="n">monit</span>
<span class="lineno">27</span><span class="kn">from</span> <span class="nn">labml_nn.neox.tokenizer</span> <span class="kn">import</span> <span class="n">get_tokenizer</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>මෙය <a href="https://github.com/EleutherAI/gpt-neox/blob/main/eval_tasks/eval_adapter.py">Eleutherai/GPT-neox වෙතින් ඇඩප්ටරය</a>මත පදනම් වේ</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">30</span><span class="k">class</span> <span class="nc">EvalHarnessAdapter</span><span class="p">(</span><span class="n">BaseLM</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">tokenizer</span></code>
යනු <a href="huggingface/tokenizers">හගිංෆේස් ටෝකනයිසර්</a></li>
<li><code class="highlight"><span></span><span class="n">vocab_size</span></code>
යනු වචන මාලාවේ ප්රමාණයයි (මෙය ටෝකනයිසර් වොකාබ් ප්රමාණයට වඩා වෙනස් වන්නේ නියෝක්ස් කාවැද්දීමේ ස්ථර ආකෘතිය සමාන්තරව සිදු කිරීම සඳහා අමතර අමතර ප්රමාණයක් එකතු කරන බැවිනි.) </li>
<li><code class="highlight"><span></span><span class="n">batch_size</span></code>
කණ්ඩායම ප්රමාණය වේ</li></ul>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">37</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">tokenizer</span><span class="p">:</span> <span class="n">Tokenizer</span><span class="p">,</span> <span class="n">vocab_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">batch_size</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">45</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
<span class="lineno">46</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">tokenizer</span>
<span class="lineno">47</span> <span class="bp">self</span><span class="o">.</span><span class="n">_eot_token_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">token_to_id</span><span class="p">(</span><span class="s2">&quot;&lt;|endoftext|&gt;&quot;</span><span class="p">)</span>
<span class="lineno">48</span> <span class="bp">self</span><span class="o">.</span><span class="n">_vocab_size</span> <span class="o">=</span> <span class="n">vocab_size</span>
<span class="lineno">49</span>
<span class="lineno">50</span> <span class="bp">self</span><span class="o">.</span><span class="n">_batch_size</span> <span class="o">=</span> <span class="n">batch_size</span></pre></div>
</div>
</div>
<div class='section' id='section-4'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-4'>#</a>
</div>
<p>වචනමාලාවේ ප්රමාණය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">52</span> <span class="nd">@property</span>
<span class="lineno">53</span> <span class="k">def</span> <span class="nf">device</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="lineno">54</span> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">()</span>
<span class="lineno">55</span>
<span class="lineno">56</span> <span class="nd">@property</span>
<span class="lineno">57</span> <span class="k">def</span> <span class="nf">vocab_size</span><span class="p">(</span><span class="bp">self</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>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">59</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_vocab_size</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>පෙළඅවසන් ටෝකනය </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">61</span> <span class="nd">@property</span>
<span class="lineno">62</span> <span class="k">def</span> <span class="nf">eot_token_id</span><span class="p">(</span><span class="bp">self</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>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">64</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_eot_token_id</span></pre></div>
</div>
</div>
<div class='section' id='section-8'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-8'>#</a>
</div>
<p>උපරිමඅනුක්රමය දිග </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">66</span> <span class="nd">@property</span>
<span class="lineno">67</span> <span class="k">def</span> <span class="nf">max_length</span><span class="p">(</span><span class="bp">self</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>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">69</span> <span class="k">return</span> <span class="mi">2048</span></pre></div>
</div>
</div>
<div class='section' id='section-10'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-10'>#</a>
</div>
<p>උත්පාදනයකිරීමට උපරිම ටෝකන ගණන </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">71</span> <span class="nd">@property</span>
<span class="lineno">72</span> <span class="k">def</span> <span class="nf">max_gen_toks</span><span class="p">(</span><span class="bp">self</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>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">74</span> <span class="k">return</span> <span class="mi">128</span></pre></div>
</div>
</div>
<div class='section' id='section-12'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-12'>#</a>
</div>
<p> කණ්ඩායම්ප්රමාණය</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">76</span> <span class="nd">@property</span>
<span class="lineno">77</span> <span class="k">def</span> <span class="nf">batch_size</span><span class="p">(</span><span class="bp">self</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>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">81</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_batch_size</span></pre></div>
</div>
</div>
<div class='section' id='section-14'>
<div class='docs doc-strings'>
<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">def</span> <span class="nf">tok_encode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</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>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">87</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">string</span><span class="p">)</span><span class="o">.</span><span class="n">ids</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>
<p> ටෝකන්හැඳුනුම්පත් වලින් පෙළ විකේතනය කරන්න</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">89</span> <span class="k">def</span> <span class="nf">tok_decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tokens</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-17'>
<div class='docs'>
<div class='section-link'>
<a href='#section-17'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">93</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokenizer</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">tokens</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">95</span> <span class="k">def</span> <span class="nf">_model_call</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inps</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">):</span>
<span class="lineno">96</span> <span class="k">raise</span> <span class="ne">NotImplementedError</span></pre></div>
</div>
</div>
<div class='section' id='section-19'>
<div class='docs'>
<div class='section-link'>
<a href='#section-19'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">98</span> <span class="k">def</span> <span class="nf">_model_generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">max_length</span><span class="p">,</span> <span class="n">eos_token_id</span><span class="p">):</span>
<span class="lineno">99</span> <span class="k">raise</span> <span class="ne">RuntimeError</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>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">101</span> <span class="k">def</span> <span class="nf">greedy_until</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">requests</span><span class="p">):</span>
<span class="lineno">102</span> <span class="k">raise</span> <span class="ne">RuntimeError</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>
<h3>ඊළඟටෝකන වල ලොග් වීමේ සමානකම් ලබා ගන්න</h3>
<ul><li><code class="highlight"><span></span><span class="n">requests</span></code>
සන්දර්භය සහ අපේක්ෂිත අඛණ්ඩ පැවැත්ම අඩංගු ඉල්ලීම් ලැයිස්තුව. </li>
<li><code class="highlight"><span></span><span class="n">disable_tqdm</span></code>
සත්ය නම්, tqdm ප්රගති තීරුව අක්රීය කරන්න. </li></ul>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">104</span> <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span>
<span class="lineno">105</span> <span class="k">def</span> <span class="nf">_loglikelihood_tokens</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">requests</span><span class="p">,</span> <span class="n">disable_tqdm</span><span class="o">=</span><span class="kc">False</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">114</span> <span class="n">res</span> <span class="o">=</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>
<p>දිගපහළ අනුපිළිවෙලෙහි ඉල්ලීම් නැවත සකස් කරන්න, එවිට සමාන දිග සහිත අනුක්රමයන් සමීප වේ </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">118</span> <span class="k">def</span> <span class="nf">_collate</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="lineno">119</span> <span class="n">toks</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">x</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
<span class="lineno">120</span> <span class="k">return</span> <span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span>
<span class="lineno">121</span>
<span class="lineno">122</span> <span class="n">reord</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">Reorderer</span><span class="p">(</span><span class="n">requests</span><span class="p">,</span> <span class="n">_collate</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>වරකටඉල්ලීම් <code class="highlight"><span></span><span class="n">batch_size</span></code>
ගණනාවක් සහිත ඉල්ලීම් හරහා යැවීමක් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">125</span> <span class="k">for</span> <span class="n">chunk</span> <span class="ow">in</span> <span class="n">utils</span><span class="o">.</span><span class="n">chunks</span><span class="p">(</span><span class="n">tqdm</span><span class="p">(</span><span class="n">reord</span><span class="o">.</span><span class="n">get_reordered</span><span class="p">(),</span> <span class="n">disable</span><span class="o">=</span><span class="n">disable_tqdm</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</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">127</span> <span class="n">inps</span> <span class="o">=</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">129</span> <span class="n">continuations</span> <span class="o">=</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">131</span> <span class="n">inplens</span> <span class="o">=</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">133</span> <span class="n">padded_length</span> <span class="o">=</span> <span class="kc">None</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">135</span> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">context_enc</span><span class="p">,</span> <span class="n">continuation_enc</span> <span class="ow">in</span> <span class="n">chunk</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">137</span> <span class="n">inp</span> <span class="o">=</span> <span class="n">context_enc</span> <span class="o">+</span> <span class="n">continuation_enc</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>ප්රමාණයඉක්මවා ගියහොත් වමේ සිට කපා ගන්න <code class="highlight"><span></span><span class="n">max_length</span></code>
</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">139</span> <span class="n">inp</span> <span class="o">=</span> <span class="n">inp</span><span class="p">[</span><span class="o">-</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">+</span> <span class="mi">1</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">141</span> <span class="n">inp</span> <span class="o">=</span> <span class="n">inp</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-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">143</span> <span class="n">inp</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="n">inp</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">long</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">145</span> <span class="n">inplen</span> <span class="o">=</span> <span class="n">inp</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-35'>
<div class='docs'>
<div class='section-link'>
<a href='#section-35'>#</a>
</div>
<p>පෑඩ්දිග තීරණය කරන්න. කෙටි අනුපිළිවෙලවල් පෑඩ් ලැබෙනු ඇත. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">149</span> <span class="k">if</span> <span class="n">padded_length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="lineno">150</span> <span class="n">padded_length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">ceil</span><span class="p">(</span><span class="n">inplen</span> <span class="o">/</span> <span class="mi">32</span><span class="p">))</span> <span class="o">*</span> <span class="mi">32</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>padded_length= padded_length නම් padded_length වෙන කිසිවක් නැත </p>
</div>
<div class='code'>
<div class="highlight"><pre></pre></div>
</div>
</div>
<div class='section' id='section-37'>
<div class='docs'>
<div class='section-link'>
<a href='#section-37'>#</a>
</div>
<p>පෑඩින් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">154</span> <span class="n">padding</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">padded_length</span> <span class="o">-</span> <span class="n">inplen</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">long</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">157</span> <span class="n">inp</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">inp</span><span class="p">,</span> <span class="n">padding</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="lineno">158</span>
<span class="lineno">159</span> <span class="n">inps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inp</span><span class="p">)</span>
<span class="lineno">160</span> <span class="n">continuations</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">continuation_enc</span><span class="p">)</span>
<span class="lineno">161</span> <span class="n">inplens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inplen</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>ආදර්ශපිවිසුම් ලබා ගන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">164</span> <span class="n">logits</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_model_call</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="n">inps</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">167</span> <span class="n">multi_logits</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">log_softmax</span><span class="p">(</span><span class="n">logits</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-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">170</span> <span class="k">for</span> <span class="n">logits</span><span class="p">,</span> <span class="n">inplen</span><span class="p">,</span> <span class="n">cont_toks</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">multi_logits</span><span class="p">,</span> <span class="n">inplens</span><span class="p">,</span> <span class="n">continuations</span><span class="p">):</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">172</span> <span class="n">contlen</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">cont_toks</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">174</span> <span class="n">logits</span> <span class="o">=</span> <span class="n">logits</span><span class="p">[</span><span class="n">inplen</span> <span class="o">-</span> <span class="n">contlen</span><span class="p">:</span> <span class="n">inplen</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">176</span> <span class="n">greedy_tokens</span> <span class="o">=</span> <span class="n">logits</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-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">178</span> <span class="n">cont_toks</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">(</span><span class="n">cont_toks</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">long</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">logits</span><span class="o">.</span><span class="n">device</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>නිශ්චිතගැලපීමක් තිබේද යන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">180</span> <span class="n">max_equal</span> <span class="o">=</span> <span class="p">(</span><span class="n">greedy_tokens</span> <span class="o">==</span> <span class="n">cont_toks</span><span class="p">)</span><span class="o">.</span><span class="n">all</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>ඉලක්කගතටෝකන වල ලොග් වීමේ හැකියාව </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">182</span> <span class="n">logits</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="n">logits</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">cont_toks</span><span class="p">[:,</span> <span class="kc">None</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>මුළුලොග්-Likehoods එකතු කරන්න සහ ප්රතිඵල සඳහා තරගය තිබුණේ ද යන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">184</span> <span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="nb">float</span><span class="p">(</span><span class="n">logits</span><span class="o">.</span><span class="n">sum</span><span class="p">()),</span> <span class="nb">bool</span><span class="p">(</span><span class="n">max_equal</span><span class="p">)))</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">187</span> <span class="k">return</span> <span class="n">reord</span><span class="o">.</span><span class="n">get_original</span><span class="p">(</span><span class="n">res</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-50'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-50'>#</a>
</div>
<h3>ලබාදී ඇති ඇගයීම් ක්රියාත්මක කරන්න</h3>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">189</span> <span class="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span>
<span class="lineno">190</span> <span class="k">def</span> <span class="nf">run_eval</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">eval_tasks</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-51'>
<div class='docs'>
<div class='section-link'>
<a href='#section-51'>#</a>
</div>
<p><a href="https://github.com/EleutherAI/lm-evaluation-harness">Eleutherai/LM ඇගයීම-පටි</a> ඇගයුම්කරු ධාවනය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">196</span> <span class="n">results</span> <span class="o">=</span> <span class="n">evaluator</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="n">lm</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">task_dict</span><span class="o">=</span><span class="n">tasks</span><span class="o">.</span><span class="n">get_task_dict</span><span class="p">(</span><span class="n">eval_tasks</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">199</span> <span class="n">results</span><span class="p">[</span><span class="s2">&quot;config&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
<span class="lineno">200</span> <span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span>
<span class="lineno">201</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">204</span> <span class="k">return</span> <span class="n">results</span></pre></div>
</div>
</div>
<div class='section' id='section-54'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-54'>#</a>
</div>
<h2>ඇගයීම්පටි ඇඩප්ටර</h2>
<p>මෙය <a href="https://github.com/EleutherAI/gpt-neox/blob/main/eval_tasks/eval_adapter.py">Eleutherai/GPT-neox වෙතින් ඇඩප්ටරය</a>මත පදනම් වේ</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">207</span><span class="k">class</span> <span class="nc">NoeXEvalHarnessAdapter</span><span class="p">(</span><span class="n">EvalHarnessAdapter</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-55'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-55'>#</a>
</div>
<ul><li><code class="highlight"><span></span><span class="n">model</span></code>
ආකෘතිය වේ </li>
<li><code class="highlight"><span></span><span class="n">tokenizer</span></code>
යනු <a href="huggingface/tokenizers">හගිංෆේස් ටෝකනයිසර්</a></li>
<li><code class="highlight"><span></span><span class="n">vocab_size</span></code>
යනු වචන මාලාවේ ප්රමාණයයි (මෙය ටෝකනයිසර් වොකාබ් ප්රමාණයට වඩා වෙනස් වන්නේ නියෝක්ස් කාවැද්දීමේ ස්ථර ආකෘතිය සමාන්තරව සිදු කිරීම සඳහා අමතර අමතර ප්රමාණයක් එකතු කරන බැවිනි.) </li>
<li><code class="highlight"><span></span><span class="n">batch_size</span></code>
කණ්ඩායම ප්රමාණය වේ </li>
</ul><li><code class="highlight"><span></span><span class="n">device</span></code>
ආකෘතියේ උපාංගය වේ</li>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">214</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">model</span><span class="p">:</span> <span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">:</span> <span class="n">Tokenizer</span><span class="p">,</span> <span class="n">vocab_size</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">:</span> <span class="nb">int</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></pre></div>
</div>
</div>
<div class='section' id='section-56'>
<div class='docs'>
<div class='section-link'>
<a href='#section-56'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">224</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">,</span> <span class="n">vocab_size</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">)</span>
<span class="lineno">225</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">226</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-57'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-57'>#</a>
</div>
<p> ආකෘතියඅමතන්න</p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">228</span> <span class="k">def</span> <span class="nf">_model_call</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inps</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">):</span></pre></div>
</div>
</div>
<div class='section' id='section-58'>
<div class='docs'>
<div class='section-link'>
<a href='#section-58'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">232</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">(</span><span class="n">inps</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-59'>
<div class='docs doc-strings'>
<div class='section-link'>
<a href='#section-59'>#</a>
</div>
<h2>දීඇති ආකෘතියක් සමඟ ඇගයීම් පටි ධාවනය කරන්න</h2>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">235</span><span class="k">def</span> <span class="nf">run_eval_harness</span><span class="p">(</span><span class="n">model</span><span class="p">:</span> <span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">eval_tasks</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">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">batch_size</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-60'>
<div class='docs'>
<div class='section-link'>
<a href='#section-60'>#</a>
</div>
<p>ටෝකනයිසර්පටවන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">241</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 tokenizer&#39;</span><span class="p">):</span>
<span class="lineno">242</span> <span class="n">tokenizer</span> <span class="o">=</span> <span class="n">get_tokenizer</span><span class="p">()</span></pre></div>
</div>
</div>
<div class='section' id='section-61'>
<div class='docs'>
<div class='section-link'>
<a href='#section-61'>#</a>
</div>
<p>කිසිවක්නියම කර නොමැති නම් සියලු කාර්යයන් </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">245</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">eval_tasks</span><span class="p">:</span>
<span class="lineno">246</span> <span class="n">eval_tasks</span> <span class="o">=</span> <span class="p">[</span>
<span class="lineno">247</span> <span class="s2">&quot;anli_r1&quot;</span><span class="p">,</span>
<span class="lineno">248</span> <span class="s2">&quot;anli_r2&quot;</span><span class="p">,</span>
<span class="lineno">249</span> <span class="s2">&quot;anli_r3&quot;</span><span class="p">,</span>
<span class="lineno">250</span> <span class="s2">&quot;hellaswag&quot;</span><span class="p">,</span>
<span class="lineno">251</span> <span class="s2">&quot;lambada&quot;</span><span class="p">,</span>
<span class="lineno">252</span> <span class="s2">&quot;piqa&quot;</span><span class="p">,</span>
<span class="lineno">253</span> <span class="s2">&quot;winogrande&quot;</span><span class="p">,</span>
<span class="lineno">254</span> <span class="s2">&quot;wsc&quot;</span><span class="p">,</span>
<span class="lineno">255</span> <span class="s2">&quot;mathqa&quot;</span><span class="p">,</span>
<span class="lineno">256</span> <span class="p">]</span></pre></div>
</div>
</div>
<div class='section' id='section-62'>
<div class='docs'>
<div class='section-link'>
<a href='#section-62'>#</a>
</div>
<p>ඇඩැප්ටරයසාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">259</span> <span class="n">adapter</span> <span class="o">=</span> <span class="n">NoeXEvalHarnessAdapter</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">tokenizer</span><span class="p">,</span> <span class="mi">50_432</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">,</span> <span class="n">device</span><span class="p">)</span></pre></div>
</div>
</div>
<div class='section' id='section-63'>
<div class='docs'>
<div class='section-link'>
<a href='#section-63'>#</a>
</div>
<p>දුවන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">262</span> <span class="k">return</span> <span class="n">adapter</span><span class="o">.</span><span class="n">run_eval</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">eval_tasks</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>
+239
View File
@@ -0,0 +1,239 @@
<!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="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<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="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta name="twitter:description" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta name="twitter:site" content="@labmlai"/>
<meta name="twitter:creator" content="@labmlai"/>
<meta property="og:url" content="https://nn.labml.ai/neox/evaluation/llm_int8.html"/>
<meta property="og:title" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta property="og:image" content="https://avatars1.githubusercontent.com/u/64068543?s=400&amp;v=4"/>
<meta property="og:site_name" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta property="og:type" content="object"/>
<meta property="og:title" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<meta property="og:description" content="LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය"/>
<title>LLM.INT8 භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය</title>
<link rel="shortcut icon" href="/icon.png"/>
<link rel="stylesheet" href="../../pylit.css?v=1">
<link rel="canonical" href="https://nn.labml.ai/neox/evaluation/llm_int8.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">neox</a>
<a class="parent" href="index.html">evaluation</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/neox/evaluation/llm_int8.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>LLM.INT8භාවිතා කරමින් ජීපීටී-නියෝක්ස් තක්සේරු කරන්න () පරීක්ෂණ කට්ටලය මත ප්රමාණකරණය</h1>
<p>මෙමකේතය <a href="../utils/llm_int8.html">LLM.INT8 () ප්රමාණකරණය</a> භාවිතා කරමින් <a href="../index.html">ජීපීටී-නියෝක්ස්</a> ඇගයීමට ලක් කරයි, කාර්යයන් කට්ටලයක් මත. </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">14</span><span></span><span class="kn">import</span> <span class="nn">torch</span>
<span class="lineno">15</span><span class="kn">from</span> <span class="nn">torch</span> <span class="kn">import</span> <span class="n">nn</span>
<span class="lineno">16</span>
<span class="lineno">17</span><span class="kn">from</span> <span class="nn">labml</span> <span class="kn">import</span> <span class="n">monit</span>
<span class="lineno">18</span><span class="kn">from</span> <span class="nn">labml_nn.neox.evaluation</span> <span class="kn">import</span> <span class="n">run_eval_harness</span>
<span class="lineno">19</span><span class="kn">from</span> <span class="nn">labml_nn.neox.model</span> <span class="kn">import</span> <span class="n">LayerGenerator</span></pre></div>
</div>
</div>
<div class='section' id='section-1'>
<div class='docs'>
<div class='section-link'>
<a href='#section-1'>#</a>
</div>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">22</span><span class="k">def</span> <span class="nf">main</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">24</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-3'>
<div class='docs'>
<div class='section-link'>
<a href='#section-3'>#</a>
</div>
<p>පාවෙන16 හි ස්ථර CPU තුළට පටවන්න. අපි ස්ථර පසුව int8 බවට පරිවර්තනය කරමු, මන්ද ස්ථර GPU වෙත පැටවීමෙන් පසු පියාසර කිරීම CUDA මතක ඛණ්ඩනය වීමට හේතු වේ (3GB පමණ මතකය කැබලි වීම නිසා අහිමි විය හැක). </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">29</span> <span class="n">layer_generator</span> <span class="o">=</span> <span class="n">LayerGenerator</span><span class="p">(</span><span class="n">is_clone_layers</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="lineno">30</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span>
<span class="lineno">31</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;cpu&#39;</span><span class="p">),</span>
<span class="lineno">32</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>ස්ථරපූරණය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">34</span> <span class="n">layers</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">layer_generator</span><span class="o">.</span><span class="n">load</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>මෙයCUDA මතක ඛණ්ඩනය අඩු කරයි </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">37</span> <span class="k">for</span> <span class="n">layer</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;Convert to int8&#39;</span><span class="p">,</span> <span class="n">layers</span><span class="p">,</span> <span class="n">is_children_silent</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="lineno">38</span> <span class="n">layer_generator</span><span class="o">.</span><span class="n">post_load_prepare</span><span class="p">(</span><span class="n">layer</span><span class="p">,</span>
<span class="lineno">39</span> <span class="n">device</span><span class="o">=</span><span class="n">device</span><span class="p">,</span>
<span class="lineno">40</span> <span class="n">is_llm_int8</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="lineno">41</span> <span class="n">llm_int8_threshold</span><span class="o">=</span><span class="mf">6.0</span><span class="p">,</span>
<span class="lineno">42</span> <span class="p">)</span>
<span class="lineno">43</span> <span class="n">layer</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'>
<div class='section-link'>
<a href='#section-6'>#</a>
</div>
<p><code class="highlight"><span></span><span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span></code>
ආකෘතිය සාදන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">46</span> <span class="n">model</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span><span class="o">*</span><span class="n">layers</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><a href="index.html">ඇගයීම් පටි</a> ධාවනය කරන්න </p>
</div>
<div class='code'>
<div class="highlight"><pre><span class="lineno">49</span> <span class="nb">print</span><span class="p">(</span><span class="n">run_eval_harness</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="s1">&#39;half_precision&#39;</span><span class="p">,</span> <span class="p">[],</span> <span class="n">device</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">53</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">54</span> <span class="n">main</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>