<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Yann Dupis</title>
<link>https://yanndupis.github.io/index.html</link>
<atom:link href="https://yanndupis.github.io/index.xml" rel="self" type="application/rss+xml"/>
<description>Practical experiments and lessons across AI training, evaluation, inference, and production.</description>
<language>en</language>
<generator>quarto-1.1.251</generator>
<lastBuildDate>Fri, 17 Jul 2026 07:00:00 GMT</lastBuildDate>
<item>
  <title>Tool-Call Streaming Behaves Differently Across OpenAI, SGLang, and llama.cpp</title>
  <dc:creator>Yann Dupis</dc:creator>
  <link>https://yanndupis.github.io/posts/tool-call-streaming/index.html</link>
  <description><![CDATA[ I ran the same OpenAI SDK tool-calling request against OpenAI, SGLang, and llama.cpp. Despite exposing OpenAI-compatible APIs, they streamed tool-call arguments differently. OpenAI returned small argument deltas, SGLang emitted larger chunks, and llama.cpp’s behavior varied by model. In one setup, it even returned the tool call as plain text instead of a structured <code>tool_calls</code> event. ]]></description>
  <category>local models</category>
  <category>tool calling</category>
  <category>inference</category>
  <guid>https://yanndupis.github.io/posts/tool-call-streaming/index.html</guid>
  <pubDate>Fri, 17 Jul 2026 07:00:00 GMT</pubDate>
  <media:content url="https://yanndupis.github.io/posts/tool-call-streaming/thumbnail.svg" medium="image" type="image/svg+xml"/>
</item>
<item>
  <title>Encrypted Inference with Moose and HuggingFace</title>
  <dc:creator>Yann Dupis</dc:creator>
  <link>https://yanndupis.github.io/posts/moose-hf-inference/moose_hf_blog.html</link>
  <description><![CDATA[ The other day, I was very inspired by the blog post <a href="https://huggingface.co/blog/sentiment-analysis-fhe">Sentiment Analysis on Encrypted Data with Homomorphic Encryption</a> co-written by Zama and HuggingFace. Zama has created an excellent encrypted machine learning library, <a href="https://huggingface.co/blog/sentiment-analysis-fhe">Concrete-ML</a>, based on fully homomorphic encryption (FHE). Concrete-ML enables data scientists to easily turn their machine learning models into an homomorphic equivalent in order to perform inference on encrypted data. In the blog post, the authors demonstrate how you can easily perform sentiment analysis on encrypted data with this library. As you can imagine, sometimes you will need to perform sentiment analysis on text containing sensitive information. With FHE, the data always remains encrypted during computation, which enables data scientists to provide a machine learning service to a user while maintaining data confidentiality. ]]></description>
  <category>deep learning</category>
  <category>mpc</category>
  <category>cryptography</category>
  <guid>https://yanndupis.github.io/posts/moose-hf-inference/moose_hf_blog.html</guid>
  <pubDate>Mon, 09 Jan 2023 08:00:00 GMT</pubDate>
  <media:content url="https://yanndupis.github.io/posts/moose-hf-inference/img/moose_cow_bay.jpeg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>A General Purpose Deep Learning Architecture - Perceiver IO From Scratch</title>
  <dc:creator>Yann Dupis</dc:creator>
  <link>https://yanndupis.github.io/posts/perceiver-io-experiment/perceiver_io_from_scratch.html</link>
  <description><![CDATA[ In recent years, we saw tremendous progress across all machine learning tasks from image classification, object detection, and translation, to question answering, text classification, and more. Main drivers of this progress are more compute resources, data, new training approaches such as transfer learning, and also more sophisticated neural network architectures. Fortunately these models are available at our fingertips. If you tackle a computer vision task, you can leverage the <a href="https://timm.fast.ai/#List-Models-with-Pretrained-Weights">Pytorch Image Models (timm)</a> library. As of now it contains more than 50 different types of architectures translating into 600 models which have <a href="https://www.kaggle.com/code/jhoward/which-image-models-are-best">different trade-offs</a> in terms of accuracy and inference time, depending on the task. For NLP, you can use the popular <a href="https://github.com/huggingface/transformers">transformer library</a> from HuggingFace which offers almost <a href="https://huggingface.co/models">80k models</a> based on about 140 different types of architectures. ]]></description>
  <category>deep learning</category>
  <category>code</category>
  <category>from scratch</category>
  <guid>https://yanndupis.github.io/posts/perceiver-io-experiment/perceiver_io_from_scratch.html</guid>
  <pubDate>Mon, 31 Oct 2022 07:00:00 GMT</pubDate>
  <media:content url="https://yanndupis.github.io/posts/perceiver-io-experiment/img/cross-attention.png" medium="image" type="image/png" height="54" width="144"/>
</item>
</channel>
</rss>
