PageSourceSearch

https://ranranhaoranzhang.com/

html ranranhaoranzhang.com collected 2026-10-09 22:09:13 UTC 24,177 bytes, 33 lines download raw bytes

1<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title> Ranran Haoran Zhang </title> <meta name="author" content="Ranran Haoran Zhang"> <meta name="description" content="PhD Candidate at Penn State University. Research in NLP, data-centric AI, and LLMs. "> <meta name="keywords" content="nlp, natural-language-processing, machine-learning, data-centric-ai, information-extraction"> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' data: https:; media-src 'self' https:; frame-src 'self' https:; connect-src 'self' https:;"> <link rel="stylesheet" href="/assets/css/bootstrap.min.css?v=a4b3f509e79c54a512b890d73235ef04"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/mdb.min.css" integrity="sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw=" crossorigin="anonymous"> <link defer rel="stylesheet" href="/assets/css/academicons.min.css?v=f0b7046b84e425c55f3463ac249818f5"> <link defer rel="stylesheet" href="/assets/css/scholar-icons.css?v=62b2ac103a88034e6882a5be5f3e2772"> <link defer rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons&amp;display=swap"> <link defer rel="stylesheet" href="/assets/css/jekyll-pygments-themes-github.css?v=591dab5a4e56573bf4ef7fd332894c99" media="" id="highlight_theme_light"> <link rel="shortcut icon" href="data:image/svg+xml,&lt;svg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22&gt;&lt;text%20y=%22.9em%22%20font-size=%2290%22&gt;%F0%9F%92%BB&lt;/text&gt;&lt;/svg&gt;"> <link rel="stylesheet" href="/assets/css/main.css?v=d41d8cd98f00b204e9800998ecf8427e"> <link rel="canonical" href="https://ranranhaoranzhang.com/"> 
1<script src="/assets/js/theme.js?v=5fea5159b787642c1bbc1f334d60f883"></script>
1 <link defer rel="stylesheet" href="/assets/css/jekyll-pygments-themes-native.css?v=5847e5ed4a4568527aa6cfab446049ca" media="none" id="highlight_theme_dark"> 
1<script>
2    initTheme();
3  </script>
3 </head> <body class="fixed-top-nav "> <header> <nav id="navbar" class="navbar navbar-light navbar-expand-sm fixed-top" role="navigation"> <div class="container"> <button class="navbar-toggler collapsed ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar top-bar"></span> <span class="icon-bar middle-bar"></span> <span class="icon-bar bottom-bar"></span> </button> <div class="collapse navbar-collapse text-right" id="navbarNav"> <ul class="navbar-nav ml-auto flex-nowrap"> <li class="nav-item active"> <a class="nav-link" href="/">about <span class="sr-only">(current)</span> </a> </li> <li class="nav-item "> <a class="nav-link" href="/publications/">publications </a> </li> <li class="nav-item "> <a class="nav-link" href="/blog/">blog </a> </li> <li class="nav-item "> <a class="nav-link" href="/cv/">CV </a> </li> <li class="nav-item"> <button id="search-toggle" title="Search" onclick="openSearchModal()"> <span class="nav-link">ctrl k <i class="fa-solid fa-magnifying-glass"></i></span> </button> </li> <li class="toggle-container"> <button id="light-toggle" title="Change theme"> <i class="fa-half-sun-moon" id="light-toggle-system"></i> <i class="fa-solid fa-moon" id="light-toggle-dark"></i> <i class="fa-solid fa-sun" id="light-toggle-light"></i> </button> </li> </ul> </div> </div> </nav> <progress id="progress" value="0"> <div class="progress-container"> <span class="progress-bar"></span> </div> </progress> </header> <div class="container mt-5" role="main"> <div class="post"> <header class="post-header"> <h1 class="post-title"> <span class="font-weight-bold">Ranran Haoran</span> Zhang </h1> <p class="desc">PhD Candidate, <a href="https://www.psu.edu/" rel="external nofollow noopener" target="_blank">Penn State University</a></p> </header> <article> <div class="profile float-right"> <figure> <picture> <img src="/assets/img/profile_new.jpg?v=c059ab96d9ddc1712786171fd20b78ed" class="img-fluid z-depth-1 rounded" width="100%" height="auto" alt="profile_new.jpg" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"> </picture> </figure> </div> <div class="clearfix"> <p>I am a Ph.D. candidate in Computer Science and Engineering at Penn State University, advised by Dr. <a href="https://ryanzhumich.github.io/" rel="external nofollow noopener" target="_blank">Rui Zhang</a>. My research focuses on <strong>LLM inference and AI systems</strong>, connecting research and engineering to make models more useful, dependable, and accessible in practice. My current work spans:</p> <ul> <li> <strong>Inference systems and runtimes.</strong> As a core maintainer of <strong><a href="https://github.com/vllm-project/vllm-metal" rel="external nofollow noopener" target="_blank">vLLM-metal</a></strong>, I develop efficient serving on Apple Silicon, working across attention kernels, scheduling, memory management, and multi-machine execution.</li> <li> <strong>Speculative decoding and draft-model training.</strong> I investigate decoding correctness and contribute to <strong><a href="https://github.com/vllm-project/speculators" rel="external nofollow noopener" target="_blank">Speculators</a></strong>, improving training’s numerical accuracy, memory efficiency, and speed.</li> <li> <strong>Evaluation and benchmarking.</strong> I developed <strong><a href="https://arxiv.org/abs/2609.19169" rel="external nofollow noopener" target="_blank">SiliconBench</a></strong> to evaluate inference engines on serving speed, memory use, and output fidelity under practical workload and hardware constraints.</li> </ul> <p>My broader background includes learning with imperfect annotations, transfer across NLP tasks, and production AI deployment at eBay. Across these areas, I follow meaningful problems into the parts of the stack where they can be solved.</p> <p>Previously, I obtained my M.S. in Information Management from the University of Illinois Urbana-Champaign, advised by Dr. <a href="http://blender.cs.illinois.edu/hengji.html" rel="external nofollow noopener" target="_blank">Heng Ji</a>, and my B.S. in Computer Science from Changsha University of Science &amp; Technology, advised by Dr. <a href="https://scholar.google.com/citations?user=c1wQ9_kAAAAJ&amp;hl=zh-CN" rel="external nofollow noopener" target="_blank">Daojian Zeng</a>.</p> </div> <h2> <a href="/news/" style="color: inherit">news</a> </h2> <div class="news"> <div class="table-responsive"> <table class="table table-sm table-borderless"> <tr> <th scope="row" style="width: 20%">Sep 12, 2026</th> <td> New preprint: <a href="https://arxiv.org/abs/2609.19169" rel="external nofollow noopener" target="_blank">SiliconBench</a>, our benchmark of LLM serving speed, memory use, and output fidelity on unified-memory desktops. </td> </tr> <tr> <th scope="row" style="width: 20%">Jun 12, 2026</th> <td> New blog post: <a href="/blog/2026/varlen-kernel-binary-search/">One Launch for Any Batch: The Binary Search Inside vllm-metal’s Varlen Attention</a>. </td> </tr> </table> </div> </div> <h2> <a href="/publications/" style="color: inherit">selected publications</a> </h2> <div class="publications"> <ol class="bibliography"> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">arXiv</abbr> </div> <div id="zhang2026siliconbench" class="col-sm-8"> <div class="title">SiliconBench: Speed, Memory, and Fidelity for LLM Serving on Unified-Memory Desktops</div> <div class="author"> <em>Ranran Haoran Zhang</em>, Aysa X. Fan, David Munhá Correia, and <span class="more-authors" title="click to view 2 more authors" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '2 more authors' ? 'Alex Cheema, Rui Zhang' : '2 more authors'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">2 more authors</span> </div> <div class="periodical"> <em>arXiv:2609.19169</em>, 2026 </div> <div class="periodical"> Under review at NeurIPS 2026 Evaluations &amp; Datasets Track. </div> <div class="links"> <a href="http://arxiv.org/abs/2609.19169" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">arXiv</a> <a class="bibtex btn btn-sm z-depth-0" role="button">Bib</a> <a href="https://arxiv.org/abs/2609.19169" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">HTML</a> <a href="https://ranranhaoranzhang.com/siliconbench/" class="btn btn-sm z-depth-0" role="button">Website</a> </div> <div class="bibtex hidden"> <figure class="highlight"><pre><code class="language-bibtex" data-lang="bibtex"><span class="nc">@article</span><span class="p">{</span><span class="nl">zhang2026siliconbench</span><span class="p">,</span>
4  <span class="na">title</span> <span class="p">=</span> <span class="s">{SiliconBench: Speed, Memory, and Fidelity for LLM Serving on Unified-Memory Desktops}</span><span class="p">,</span>
5  <span class="na">author</span> <span class="p">=</span> <span class="s">{Zhang, Ranran Haoran and Fan, Aysa X. and Correia, David Munh\'{a} and Cheema, Alex and Zhang, Rui}</span><span class="p">,</span>
6  <span class="na">
6journal</span> <span class="p">=</span> <span class="s">{arXiv:2609.19169}</span><span class="p">,</span>
7  <span class="na">year</span> <span class="p">=</span> <span class="s">{2026}</span><span class="p">,</span>
8  <span class="na">note</span> <span class="p">=</span> <span class="s">{Under review at NeurIPS 2026 Evaluations \&amp; Datasets Track.}</span><span class="p">,</span>
9<span class="p">}</span></code></pre></figure> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">EMNLP</abbr> </div> <div id="zhang2025batchspec" class="col-sm-8"> <div class="title">Correctness Forensics for Batch Speculative Decoding: Diagnosing the Ragged Tensor Problem</div> <div class="author"> <em>Ranran Haoran Zhang</em>, Soumik Dey, Ashirbad Mishra, and <span class="more-authors" title="click to view 3 more authors" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '3 more authors' ? 'Hansi Wu, Binbin Li, Rui Zhang' : '3 more authors'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">3 more authors</span> </div> <div class="periodical"> <em>In Findings of the Association for Computational Linguistics: EMNLP 2026</em>, 2026 </div> <div class="periodical"> Accepted. </div> <div class="links"> <a href="http://arxiv.org/abs/2510.22876" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">arXiv</a> <a class="bibtex btn btn-sm z-depth-0" role="button">Bib</a> <a href="https://arxiv.org/abs/2510.22876" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">HTML</a> </div> <div class="bibtex hidden"> <figure class="highlight"><pre><code class="language-bibtex" data-lang="bibtex"><span class="nc">@inproceedings</span><span class="p">{</span><span class="nl">zhang2025batchspec</span><span class="p">,</span>
10  <span class="na">title</span> <span class="p">=</span> <span class="s">{Correctness Forensics for Batch Speculative Decoding: Diagnosing the Ragged Tensor Problem}</span><span class="p">,</span>
11  <span class="na">author</span> <span class="p">=</span> <span class="s">{Zhang, Ranran Haoran and Dey, Soumik and Mishra, Ashirbad and Wu, Hansi and Li, Binbin and Zhang, Rui}</span><span class="p">,</span>
12  <span class="na">booktitle</span> <span class="p">=</span> <span class="s">{Findings of the Association for Computational Linguistics: EMNLP 2026}</span><span class="p">,</span>
13  <span class="na">year</span> <span class="p">=</span> <span class="s">{2026}</span><span class="p">,</span>
14  <span class="na">note</span> <span class="p">=</span> <span class="s">{Accepted.}</span><span class="p">,</span>
15<span class="p">}</span></code></pre></figure> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">NAACL</abbr> </div> <div id="zhang2025lazytoprolific" class="col-sm-8"> <div class="title">From Lazy to Prolific: Tackling Missing Labels in Open Vocabulary Extreme Classification by Positive-Unlabeled Sequence Learning</div> <div class="author"> <em>Ranran Haoran Zhang</em>, Bensu Uçar, Soumik Dey, and <span class="more-authors" title="click to view 3 more authors" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '3 more authors' ? 'Hansi Wu, Binbin Li, Rui Zhang' : '3 more authors'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">3 more authors</span> </div> <div class="periodical"> <em>In Findings of the Association for Computational Linguistics: NAACL 2025</em>, 2025 </div> <div class="periodical"> </div> <div class="links"> <a href="http://arxiv.org/abs/2408.08981" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">arXiv</a> <a class="bibtex btn btn-sm z-depth-0" role="button">Bib</a> <a href="https://aclanthology.org/2025.findings-naacl.1/" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">HTML</a> </div> <div class="bibtex hidden"> <figure class="highlight"><pre><code class="language-bibtex" data-lang="bibtex"><span class="nc">@inproceedings</span><span class="p">{</span><span class="nl">zhang2025lazytoprolific</span><span class="p">,</span>
16  <span class="na">title</span> <span class="p">=</span> <span class="s">
16{From Lazy to Prolific: Tackling Missing Labels in Open Vocabulary Extreme Classification by Positive-Unlabeled Sequence Learning}</span><span class="p">,</span>
17  <span class="na">author</span> <span class="p">=</span> <span class="s">{Zhang, Ranran Haoran and U\c{c}ar, Bensu and Dey, Soumik and Wu, Hansi and Li, Binbin and Zhang, Rui}</span><span class="p">,</span>
18  <span class="na">booktitle</span> <span class="p">=</span> <span class="s">{Findings of the Association for Computational Linguistics: NAACL 2025}</span><span class="p">,</span>
19  <span class="na">year</span> <span class="p">=</span> <span class="s">{2025}</span><span class="p">,</span>
20<span class="p">}</span></code></pre></figure> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">EMNLP</abbr> </div> <div id="zhang2020minimize" class="col-sm-8"> <div class="title">Minimize Exposure Bias of Seq2Seq Models in Joint Entity and Relation Extraction</div> <div class="author"> <em>Ranran Haoran Zhang<sup>*</sup></em>, Qianying Liu<sup>*</sup>, Aysa X. Fan, and <span class="more-authors" title="click to view 5 more authors" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '5 more authors' ? 'Heng Ji, Daojian Zeng, Fei Cheng, Daisuke Kawahara, Sadao Kurohashi' : '5 more authors'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">5 more authors</span> </div> <div class="periodical"> <em>In Findings of the Association for Computational Linguistics: EMNLP 2020</em>, 2020 </div> <div class="periodical"> </div> <div class="links"> <a class="bibtex btn btn-sm z-depth-0" role="button">Bib</a> <a href="https://aclanthology.org/2020.findings-emnlp.23/" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">HTML</a> </div> <div class="bibtex hidden"> <figure class="highlight"><pre><code class="language-bibtex" data-lang="bibtex"><span class="nc">@inproceedings</span><span class="p">{</span><span class="nl">zhang2020minimize</span><span class="p">,</span>
21  <span class="na">title</span> <span class="p">=</span> <span class="s">{Minimize Exposure Bias of Seq2Seq Models in Joint Entity and Relation Extraction}</span><span class="p">,</span>
22  <span class="na">author</span> <span class="p">=</span> <span class="s">{Zhang, Ranran Haoran and Liu, Qianying and Fan, Aysa X. and Ji, Heng and Zeng, Daojian and Cheng, Fei and Kawahara, Daisuke and Kurohashi, Sadao}</span><span class="p">,</span>
23  <span class="na">booktitle</span> <span class="p">=</span> <span class="s">{Findings of the Association for Computational Linguistics: EMNLP 2020}</span><span class="p">,</span>
24  <span class="na">year</span> <span class="p">=</span> <span class="s">{2020}</span><span class="p">,</span>
25<span class="p">}</span></code></pre></figure> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">AAAI</abbr> </div> <div id="zeng2020copymtl" class="col-sm-8"> <div class="title">CopyMTL: Copy Mechanism for Joint Extraction of Entities and Relations with Multi-Task Learning</div> <div class="author"> Daojian Zeng<sup>*</sup>, <em>Ranran Haoran Zhang<sup>*</sup></em>, and Qianying Liu </div> <div class="periodical"> <em>In Proceedings of the AAAI Conference on Artificial Intelligence</em>, 2020 </div> <div class="periodical"> </div> <div class="links"> <a href="http://arxiv.org/abs/1911.10438" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">arXiv</a> <a class="bibtex btn btn-sm z-depth-0" role="button">Bib</a> <a href="https://ojs.aaai.org/index.php/AAAI/article/view/6495" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">HTML</a> </div> <div class="bibtex hidden"> <figure class="highlight"><pre><code class="language-bibtex" data-lang="bibtex"><span class="nc">@inproceedings</span><span class="p">{</span><span class="nl">zeng2020copymtl</span><span class="p">,</span>
26  <span class="na">title</span> <span class="p">=</span> <span class="s">{CopyMTL: Copy Mechanism for Joint Extraction of Entities and Relations with Multi-Task Learning}</span><span class="p">,</span>
27  <span class="na">author</span> <span class="p">=</span> <span class="s">{Zeng, Daojian and Zhang, Ranran Haoran and Liu, Qianying}</span><span class="p">,</span>
28  <span class="na">booktitle</span> <span class="p">=</span> <span class="s">{Proceedings of the AAAI Conference on Artificial Intelligence}</span><span class="p">,</span>
29  <span class="na">year</span> <span class="p">=</span> <span class="s">{2020}</span><span class="p">,</span>
30<span class="p">}</span></code></pre></figure> </div> </div> </div> </li> </ol> </div> <p><a href="/publications/">View all publications</a></p> <div class="social"> <div class="contact-icons"> <a href="/assets/pdf/RanranHaoranZhang_cv-10.pdf" title="Cv pdf"><i class="ai ai-cv"></i></a> <a href="/cdn-cgi/l/email-protection#85edffffb0b6b3b4c5f5f6f0abe0e1f0" title="Email"><i class="fa-solid fa-envelope"></i></a> <a href="https://github.com/WindChimeRan" title="Github username" rel="external nofollow noopener" target="_blank"><i class="fa-brands fa-github"></i></a> <a href="https://scholar.google.com/citations?user=aDqdjcUAAAAJ" title="Scholar userid" rel="external nofollow noopener" target="_blank"><i class="ai ai-google-scholar"></i></a> <a href="https://orcid.org/0000-0002-1005-9757" title="Orcid id" rel="external nofollow noopener" target="_blank"><i class="ai ai-orcid"></i></a> <a href="/feed.xml" title="Rss icon"><i class="fa-solid fa-square-rss"></i></a> </div> <div class="contact-note"></div> </div> </article> </div> </div> <footer class="fixed-bottom" role="contentinfo"> <div class="container mt-0"> © Copyright 2026 Ranran Haoran Zhang. Powered by <a href="https://jekyllrb.com/" target="_blank" rel="external nofollow noopener">Jekyll</a> with <a href="https://github.com/alshedivat/al-folio" rel="external nofollow noopener" target="_blank">al-folio</a> theme. Hosted by <a href="https://pages.github.com/" target="_blank" rel="external nofollow noopener">GitHub Pages</a>. </div> </footer>
vendor: 109 bytes, line 30
30 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
30<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
30 
30<script src="/assets/js/bootstrap.bundle.min.js"></script>
30 
30<script src="https://cdn.jsdelivr.net/npm/[email protected]/js/mdb.min.js" integrity="sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA=" crossorigin="anonymous"></script>
30 
30<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/masonry.pkgd.min.js" integrity="sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" crossorigin="anonymous"></script>
30 
30<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/imagesloaded.pkgd.min.js" integrity="sha256-htrLFfZJ6v5udOG+3kNLINIKh2gvoKqwEhHYfTTMICc=" crossorigin="anonymous"></script>
30 
30<script defer src="/assets/js/masonry.js?v=a0db7e5d5c70cc3252b3138b0c91dcaf" type="text/javascript"></script>
30 
30<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous"></script>
30 
30<script defer src="/assets/js/zoom.js?v=85ddb88934d28b74e78031fd54cf8308"></script>
30 
30<script src="/assets/js/no_defer.js?v=2781658a0a2b13ed609542042a859126"></script>
30 
30<script defer src="/assets/js/common.js?v=c15de51d4bb57887caa2c21988d97279"></script>
30 
30<script defer src="/assets/js/copy_code.js?v=c8a01c11a92744d44b093fc3bda915df" type="text/javascript"></script>
30 
30<script defer src="/assets/js/jupyter_new_tab.js?v=d9f17b6adc2311cbabd747f4538bb15f"></script>
30 
30<script async src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>
30 
30<script async src="https://badge.dimensions.ai/badge.js"></script>
30 
30<script defer type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js" integrity="sha256-MASABpB4tYktI2Oitl4t+78w/lyA+D7b/s9GEP0JOGI=" crossorigin="anonymous"></script>
30 
30<script src="/assets/js/mathjax-setup.js?v=a5bb4e6a542c546dd929b24b8b236dfd"></script>
30 
30<script defer src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6" crossorigin="anonymous"></script>
30 
30<script defer src="/assets/js/progress-bar.js?v=2f30e0e6801ea8f5036fa66e1ab0a71a" type="text/javascript"></script>
30 
30<script src="/assets/js/vanilla-back-to-top.min.js?v=f40d453793ff4f64e238e420181a1d17"></script>
30 
30<script>
31    addBackToTop();
32  </script>
32 
32<script type="module" src="/assets/js/search/ninja-keys.min.js?v=a3446f084dcaecc5f75aa1757d087dcf"></script>
32 <ninja-keys hidebreadcrumbs noautoloadmdicons placeholder="Type to start searching"></ninja-keys> 
32<script src="/assets/js/search-setup.js?v=6c304f7b1992d4b60f7a07956e52f04a"></script>
32 
32<script src="/assets/js/search-data.js"></script>
32 
32<script src="/assets/js/shortcut-key.js?v=ccc841c459bfc0e64c1c2b5acd10df02"></script>
32 
32<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"c658e8f601394a669d34dbd225c3d968","r":1,"spa":2}' crossorigin="anonymous"></script>
32
33</body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.