1<!doctype html><!-- This site was created with Hugo Blox. https://hugoblox.com --><!-- Last Published: September 30, 2026 --><html lang=en-us><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=generator content="Hugo Blox Builder 5.9.7"><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=preload as=style href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Roboto+Mono&family=Roboto:wght@400;700&display=swap"><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Roboto+Mono&family=Roboto:wght@400;700&display=swap" media=print onload='this.media="all"'>
1<script src=/js/mathjax-config.js></script>
1<link rel=stylesheet href=/css/vendor-bundle.min.26c458e6907dc03073573976b7f4044e.css media=print onload='this.media="all"'><link rel=stylesheet href=https://cdn.jsdelivr.net/gh/jpswalsh/[email protected]/css/academicons.min.css integrity="sha512-IW0nhlW5MgNydsXJO40En2EoCkTTjZhI3yuODrZIc8cQ4h1XcF53PsqDHa09NqnkXuIe0Oiyyj171BqZFwISBw==" crossorigin=anonymous media=print onload='this.media="all"'><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.min.css integrity crossorigin=anonymous media=print onload='this.media="all"'>
1<script src=https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js integrity crossorigin=anonymous async></script>
1<link rel=stylesheet href=/css/wowchemy.f6689966c0a10712f95f034011917db0.css><link rel=stylesheet href=/css/libs/chroma/github-light.min.css title=hl-light media=print onload='this.media="all"'><link rel=stylesheet href=/css/libs/chroma/dracula.min.css title=hl-dark media=print onload='this.media="all"' disabled>
vendor: 63 bytes, line 1
1<script async src="https://www.googletagmanager.com/gtag/js?id=
1G-QVKXLS820Z
vendor: 11 bytes, line 1
1"></script>
1<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}function trackOutboundLink(e,t){gtag("event","click",{event_category:"outbound",event_label:e,transport_type:"beacon",event_callback:function(){t!=="_blank"&&(document.location=e)}}),console.debug("Outbound link clicked: "+e)}function onClickCallback(e){if(e.target.tagName!=="A"||e.target.host===window.location.host)return;trackOutboundLink(e.target,e.target.getAttribute("target"))}gtag("js",new Date),gtag("config","G-QVKXLS820Z",{}),gtag("set",{cookie_flags:"SameSite=None;Secure"}),document.addEventListener("click",onClickCallback,!1)</script>
1<meta name=author content="Saibo Geng"><meta name=description content="I am a PhD student working on Large Language Models with a focus on inference time methods."><link rel=alternate hreflang=en-us href=https://saibo-creator.github.io/><link rel=canonical href=https://saibo-creator.github.io/><link rel=manifest href=/manifest.webmanifest><link rel=icon type=image/png href=/media/icon_hu6f46a395a0e1d5ffc3111f5968ef9c2a_15406_32x32_fill_lanczos_center_3.png><link rel=apple-touch-icon type=image/png href=/media/icon_hu6f46a395a0e1d5ffc3111f5968ef9c2a_15406_180x180_fill_lanczos_center_3.png><meta name=theme-color content="#1565c0"><meta property="twitter:card" content="summary"><meta property="twitter:site" content="@GetResearchDev"><meta property="twitter:creator" content="@GetResearchDev"><meta property="twitter:image" content="https://saibo-creator.github.io/media/icon_hu6f46a395a0e1d5ffc3111f5968ef9c2a_15406_512x512_fill_lanczos_center_3.png"><meta property="profile:first_name" content="Saibo"><meta property="profile:last_name" content="Geng"><meta property="og:type" content="profile"><meta property="og:site_name" content="Saibo Geng"><meta property="og:url" content="https://saibo-creator.github.io/"><meta property="og:title" content="Saibo Geng"><meta property="og:description" content="I am a PhD student working on Large Language Models with a focus on inference time methods."><meta property="og:image" content="https://saibo-creator.github.io/media/icon_hu6f46a395a0e1d5ffc3111f5968ef9c2a_15406_512x512_fill_lanczos_center_3.png"><meta property="og:locale" content="en-us"><meta property="og:updated_time" content="2022-10-24T00:00:00+00:00">
1<script type=application/ld+json>{"@context":"https://schema.org","@type":"WebSite","potentialAction":{"@type":"SearchAction","target":"https://saibo-creator.github.io/?q={search_term_string}","query-input":"required name=search_term_string"},"url":"https://saibo-creator.github.io/"}</script>
1<link rel=alternate href=/index.xml type=application/rss+xml title="Saibo Geng"><title>Saibo Geng</title></head><body id=top data-spy=scroll data-offset=70 data-target=#navbar-main class=page-wrapper data-wc-page-id=3976528693a0108357f4928017600865>
1<script src=/js/wowchemy-init.min.9e4214442a7711d35691acd58f6f6361.js></script>
1<aside class=search-modal id=search><div class=container><section class=search-header><div class="row no-gutters justify-content-between mb-3"><div class=col-6><h1>Search</h1></div><div class="col-6 col-search-close"><a class=js-search href=# aria-label=Close><i class="fas fa-times-circle text-muted" aria-hidden=true></i></a></div></div><div id=search-box><input name=q id=search-query placeholder=Search... autocapitalize=off autocomplete=off autocorrect=off spellcheck=false type=search class=form-control aria-label=Search...></div></section><section class=section-search-results><div id=search-hits></div></section></div></aside><div class="page-header header--fixed"><header><nav class="navbar navbar-expand-lg navbar-light compensate-for-scrollbar" id=navbar-main><div class=container-xl><div class="d-none d-lg-inline-flex"><a class=navbar-brand href=/>Saibo Geng</a></div><button type=button class=navbar-toggler data-toggle=collapse data-target=#navbar-content aria-controls=navbar-content aria-expanded=false aria-label="Toggle navigation"> 2<span><i class="fas fa-bars"></i></span></button><div class="navbar-brand-mobile-wrapper d-inline-flex d-lg-none"><a class=navbar-brand href=/>Saibo Geng</a></div><div class="navbar-collapse main-menu-item collapse justify-content-start" id=navbar-content><ul class="navbar-nav d-md-inline-flex"><li class=nav-item><a class=nav-link href=/#about data-target=#about><span>Home</span></a></li><li class=nav-item><a class=nav-link href=/#posts data-target=#posts><span>Posts</span></a></li><li class=nav-item><a class=nav-link href=/uploads/Saibo_Geng_CV.pdf><span>CV</span></a></li></ul></div><ul class="nav-icons navbar-nav flex-row ml-auto d-flex pl-md-2"><li class="nav-item d-none d-lg-inline-flex"><a class=nav-link href=https://twitter.com/SaiboGeng data-toggle=tooltip data-placement=bottom title="Follow me on Twitter" target=_blank rel=noopener aria-label="Follow me on Twitter"><i class="fab fa-twitter" aria-hidden=true></i></a></li><li class=nav-item><a class="nav-link js-search" href=# aria-label=Search><i class="fas fa-search" aria-hidden=true></i></a></li><li class="nav-item dropdown theme-dropdown"><a href=# class=nav-link data-toggle=dropdown aria-haspopup=true aria-label="Display preferences"><i class="fas fa-moon" aria-hidden=true></i></a><div class=dropdown-menu><a href=# class="dropdown-item js-set-theme-light"><span>Light</span> 3</a><a href=# class="dropdown-item js-set-theme-dark"><span>Dark</span> 4</a><a href=# class="dropdown-item js-set-theme-auto"><span>Automatic</span></a></div></li></ul></div></nav></header></div><div class=page-body><span class="js-widget-page d-none"></span><section id=about class="home-section wg-about-biography"><div class=home-section-bg></div><div class=container><div class=row><div class="col-12 col-lg-4"><div id=profile><img class="avatar avatar-circle" width=270 height=270 src=/authors/admin/avatar_hud4424d4e339678304bee115a52e48d55_1147353_270x270_fill_q75_lanczos_center.jpg alt="Saibo Geng"><div class=portrait-title><h2>Saibo Geng</h2><h3>PhD student in EPFL</h3><h3><a href=https://dlab.epfl.ch/ target=_blank rel=noopener><span>EPFL Data Science Lab</span></a></h3></div><ul class=network-icon aria-hidden=true><li><a href=/#contact aria-label=envelope><i class="fas fa-envelope big-icon"></i></a></li><li><a href=https://twitter.com/SaiboGeng target=_blank rel=noopener aria-label=twitter><i class="fab fa-twitter big-icon"></i></a></li><li><a href="https://scholar.google.com/citations?user=Y194NbQAAAAJ&hl=en" target=_blank rel=noopener aria-label=graduation-cap><i class="fas fa-graduation-cap big-icon"></i></a></li><li><a href=https://github.com/saibo-creator target=_blank rel=noopener aria-label=github><i class="fab fa-github big-icon"></i></a></li><li><a href=https://www.linkedin.com/ target=_blank rel=noopener aria-label=linkedin><i class="fab fa-linkedin big-icon"></i></a></li><li><a href=/uploads/Saibo_Geng_CV.pdf aria-label=cv><i class="ai ai-cv big-icon"></i></a></li></ul></div></div><div class="col-12 col-lg-8"><h1>Biography</h1><div class=article-style><p>
4Hey there! Iâm a Ph.D. candidate at <a href=https://dlab.epfl.ch/ target=_blank rel=noopener>EPFL’s Data Science Lab</a>, where I work on efficient and controllable inference for large language models (LLMs).</p><h2 id=about-me>About Me</h2><p>Please check out my <a href="https://scholar.google.com/citations?user=Y194NbQAAAAJ&hl=en" target=_blank rel=noopener>Google Scholar</a> for more details on my publications.</p><p>You can also find my <a href=https://github.com/Saibo-creator target=_blank rel=noopener>Github profile</a> on what I am currently building.</p><p>If you have any questions or would like to collaborate, feel free to reach out to me via <a href=mailto:[email protected]>email</a></p><p>I have had the privilege of working with many brilliant students, including:</p><ul><li>Nathan Rachin (Bachelor Semester Project, now Master at ETH Zurich)</li><li>Chang Jin (Semester Project on exchange, now Intern at Shanghai AI Lab)</li><li>Ana-Maria Indreias (Masterâs Thesis, now at UBS)</li><li>Yuxing Yao (Masterâs Thesis, now at ByteDance AI Lab)</li><li>Arina Rak (Semester Project, now at Google DeepMind)</li><li>Berkay Doner (Semester Project, now at Apple)</li><li>Qinyue Zheng (Masterâs Thesis, now PhD at ETH Zurich)</li></ul><p>Outside of research, I enjoy reading all kinds of books, traveling and learning different languages. Having spent many years in France and Switzerland, I am fluent in French, English, and native in Chinese. I am currently picking up German and Korean in my free time.</p></div><div class=row><div class=col-md-5><div class=section-subheading>Interests</div><ul class="ul-interests fa-ul mb-0"><li><i class="fa-li fa-solid fa-book-open"></i> 5Grammar-constrained Decoding</li><li><i class="fa-li fa-solid fa-book-open"></i> 6Efficient Decoding methods</li><li><i class="fa-li fa-solid fa-book-open"></i> 7Domain-Specific Language generation with LLM</li></ul></div><div class=col-md-7><div class=section-subheading>Education</div><ul class="ul-edu fa-ul mb-0"><li><i class="fa-li fa-solid fa-graduation-cap"></i><div class=description><p class=course>PhD in Computer Science, 2022-Now</p><p class=institution>EPFL</p></div></li></ul></div></div></div></div></div></section><section id=posts class="home-section wg-collection"><div class=home-section-bg></div><div class=container><div class=row><div class="section-heading col-12 col-lg-4 mb-3 mb-lg-0 d-flex flex-column align-items-center align-items-lg-start"><h1 class=mb-0>Recent Posts</h1></div><div class="col-12 col-lg-8"><div class="media stream-item view-compact"><div class=media-body><div class="section-subheading article-title mb-0 mt-0"><a href=/post/2024_07_19_constrained_decoding_is_posterior_inference/>Constrained Decoding is Posterior Inference</a></div><a href=/post/2024_07_19_constrained_decoding_is_posterior_inference/ class=summary-link><div class=article-style>If you are familiar with constrained decoding, you might have occasionally heard people mentioning the word “posterior inference” in the context of constrained decoding. 8In this post, I will explain why constrained decoding can(should) be seen as a form of posterior inference.</div></a><div class="stream-meta article-metadata"><div class=article-metadata><span class=article-date>Jul 19, 2024 9</span><span class=middot-divider></span> 10<span class=article-reading-time>4 min read</span></div></div></div><div class=ml-3></div></div><div class="media stream-item view-compact"><div class=media-body><div class="section-subheading article-title mb-0 mt-0"><a href=/post/2024_03_08_speculative_sampling/>Speculative Sampling Explained</a></div><a href=/post/2024_03_08_speculative_sampling/ class=summary-link><div class=article-style>Speculative Sampling The idea of speculative sampling is to use a draft sampling to achieve the same sampling result as the target sampling. 11We have a target sampling distribution $p(x)$ and a draft sampling distribution $q(x)$.</div></a><div class="stream-meta article-metadata"><div class=article-metadata><span class=article-date>Mar 8, 2024 12</span><span class=middot-divider></span> 13<span class=article-reading-time>3 min read</span></div></div></div><div class=ml-3></div></div><div class="media stream-item view-compact"><div class=media-body><div class="section-subheading article-title mb-0 mt-0"><a href=/post/2023_08_03_two_ways_of_perplexity/>Two Definitions of Perplexity</a></div><a href=/post/2023_08_03_two_ways_of_perplexity/ class=summary-link><div class=article-style>Perplexity Definition 1 Given a sequence $X = x_1, x_2, \dots, x_T$ of words and a language model $p$, the perplexity of the sequence can is defined as follows: 14$$ \text{PPL}(X) = p(x_1, x_2, \dots, x_T)^{-\frac{1}{T}} $$</div></a><div class="stream-meta article-metadata"><div class=article-metadata><span class=article-date>Aug 3, 2023 15</span><span class=middot-divider></span> 16<span class=article-reading-time>3 min read</span></div></div></div><div class=ml-3></div></div><div class="media stream-item view-compact"><div class=media-body><div class="section-subheading article-title mb-0 mt-0"><a href=/post/2024_04_03_probabilistic_interpretation_wordpiece/>Probabilistic Interpretation of WordPiece</a></div><a href=/post/2024_04_03_probabilistic_interpretation_wordpiece/ class=summary-link><div class=article-style>WordPiece WordPiece tokenization is a subword tokenization algorithm. It is used in BERT, which is a work of 2018. 17Example: 18from transformers import BertTokenizer tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") tokenizer.tokenize("I have a new GPU!</div></a><div class="stream-meta article-metadata"><div class=article-metadata><span class=article-date>Apr 3, 2023 19</span><span class=middot-divider></span> 20<span class=article-reading-time>6 min read</span></div></div></div><div class=ml-3></div></div></div></div></div></section></div><div class=page-footer><div class=container><footer class=site-footer><p class="powered-by copyright-license-text">© 2026 Me. This work is licensed under <a href=https://creativecommons.org/licenses/by-nc-nd/4.0 rel="noopener noreferrer" target=_blank>CC BY NC ND 4.0</a></p><p class="powered-by footer-license-icons"><a href=https://creativecommons.org/licenses/by-nc-nd/4.0 rel="noopener noreferrer" target=_blank aria-label="Creative
20Commons"><i class="fab fa-creative-commons fa-2x" aria-hidden=true></i> 21<i class="fab fa-creative-commons-by fa-2x" aria-hidden=true></i> 22<i class="fab fa-creative-commons-nc fa-2x" aria-hidden=true></i> 23<i class="fab fa-creative-commons-nd fa-2x" aria-hidden=true></i></a></p><p class=powered-by>Published with <a href="https://hugoblox.com/?utm_campaign=poweredby" target=_blank rel=noopener>Hugo Blox Builder</a> â the free, <a href=https://github.com/HugoBlox/hugo-blox-builder target=_blank rel=noopener>open source</a> website builder that empowers creators.</p></footer></div></div>
23<script src=/js/vendor-bundle.min.b2240102cb8b24bcbe037562ce2ea60a.js></script>
23<script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.min.js integrity crossorigin=anonymous></script>
23<script id=search-hit-fuse-template type=text/x-template> 24 <div class="search-hit" id="summary-{{key}}"> 25 <div class="search-hit-content"> 26 <div class="search-hit-name"> 27 <a href="{{relpermalink}}">{{title}}</a> 28 <div class="article-metadata search-hit-type">{{type}}</div> 29 <p class="search-hit-description">{{snippet}}</p> 30 </div> 31 </div> 32 </div> 33 </script>
33<script src=https://cdn.jsdelivr.net/gh/krisk/[email protected]/dist/fuse.min.js integrity="sha512-o38bmzBGX+hD3JHWUFCDA09btWaqrNmoJ3RXLlrysA7PP01Kgs4UlE4MhelE1v5dJR3+cxlR4qQlotsW7jKsnw==" crossorigin=anonymous></script>
33<script src=https://cdn.jsdelivr.net/gh/julmot/[email protected]/dist/jquery.mark.min.js integrity="sha512-mhbv5DqBMgrWL+32MmsDOt/OAvqr/cHimk6B8y/bx/xS88MVkYGPiVv2ixKVrkywF2qHplNRUvFsAHUdxZ3Krg==" crossorigin=anonymous></script>
33<script id=page-data type=application/json>{"use_headroom":false}</script>
33<script src=/en/js/wowchemy.min.7f5ebaff62ae468cff8bb3dd1337bb9b.js></script>
33<script src=/js/wowchemy-map.a26e9d2f7238ba5b868384f1c5bc6477.js type=module></script>
33<div id=modal class="modal fade" role=dialog><div class=modal-dialog><div class=modal-content><div class=modal-header><h5 class=modal-title>Cite</h5><button type=button class=close data-dismiss=modal aria-label=Close> 34<span aria-hidden=true>×</span></button></div><div class=modal-body><pre><code></code></pre></div><div class=modal-footer><a class="btn btn-outline-primary my-1 js-copy-cite" href=# target=_blank><i class="fas fa-copy"></i> Copy 35</a><a class="btn btn-outline-primary my-1 js-download-cite" href=# target=_blank><i class="fas fa-download"></i> Download</a><div id=modal-error></div></div></div></div></div>
35<script src=/js/wowchemy-publication.9c0e895144aef5a693008b5c5d450147.js type=module></script>
35</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.