<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Korbinian Pöppel</title>
    <link>https://korbi.ai/</link>
    <description>Recent content on Korbinian Pöppel</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Thu, 19 Jun 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://korbi.ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CompoConf</title>
      <link>https://korbi.ai/blog/compoconf/</link>
      <pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://korbi.ai/blog/compoconf/</guid>
      <description>&lt;h1 id=&#34;compoconf---modular-configuration-for-modular-systems&#34;&gt;CompoConf - modular configuration for modular systems&lt;/h1&gt;&#xA;&lt;p&gt;(see also the lengthy &lt;a href=&#34;https://korbi.ai/blog/compoconf_lengthy&#34;&gt;version&lt;/a&gt; aided by ChatGPT)&lt;/p&gt;&#xA;&lt;p&gt;Library Code: &lt;a href=&#34;https://github.com/kpoeppel/compoconf&#34;&gt;https://github.com/kpoeppel/compoconf&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Docs: &lt;a href=&#34;https://compoconf.readthedocs.org&#34;&gt;https://compoconf.readthedocs.org&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;composition-over-inheritance&#34;&gt;Composition over Inheritance&lt;/h2&gt;&#xA;&lt;p&gt;&amp;ldquo;Composition over Inheritance&amp;rdquo; is one of the phrases you might have heard many, many times in software engineering. Self-contained units, &lt;strong&gt;modules&lt;/strong&gt;, are at the core; they can be tested separately and can be easily replaced when they satisfy a common &lt;strong&gt;interface&lt;/strong&gt;. This potential for switching out components makes it easier to compare models, ablate models (an important scientific practice), test on new datasets, and perform hyperparameter optimization. Early on, an important feature of PyTorch was its &lt;code&gt;nn.Module&lt;/code&gt; system, enabling a lot of flexibility and easy re-use of components, making it the leading framework for Machine Learning today. Still, common practice in Machine Learning is to hard-code many default values and then put the remaining configuration variables into a large flat configuration file, as seen in Hugging Face&amp;rsquo;s &lt;code&gt;transformers&lt;/code&gt;. Moving around configuration options forces some reduction in configurational complexity, because who wants to keep track of numerous hyperparameters for various components. This compression is beneficial once configurations stabilize.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CompoConf - the lengthy version</title>
      <link>https://korbi.ai/blog/compoconf_lengthy/</link>
      <pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://korbi.ai/blog/compoconf_lengthy/</guid>
      <description>&lt;h1 id=&#34;compoconf-embracing-composition-over-inheritance-in-deep-learning-configurations&#34;&gt;CompoConf: Embracing Composition Over Inheritance in Deep Learning Configurations&lt;/h1&gt;&#xA;&lt;p&gt;(see also the self-written &lt;a href=&#34;https://korbi.ai/blog/compoconf&#34;&gt;version&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;p&gt;Library Code: &lt;a href=&#34;https://github.com/kpoeppel/compoconf&#34;&gt;https://github.com/kpoeppel/compoconf&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Docs: &lt;a href=&#34;https://compoconf.readthedocs.org&#34;&gt;https://compoconf.readthedocs.org&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Deep learning projects often juggle complex model architectures and their configurations. Two prevalent approaches have emerged for managing these configurations: &lt;strong&gt;inheritance-based configs&lt;/strong&gt; (as seen in libraries like Hugging Face Transformers) and &lt;strong&gt;composition-based design&lt;/strong&gt; (as encouraged by PyTorch’s modular &lt;code&gt;nn.Module&lt;/code&gt; patterns). In this post, we introduce &lt;strong&gt;CompoConf&lt;/strong&gt;, a new Python library that brings the &lt;em&gt;“composition over inheritance”&lt;/em&gt; principle to configuration management. We’ll explore why this principle matters for machine learning configs, how Hugging Face and PyTorch differ in their philosophies, and how CompoConf bridges a gap by enabling clean, &lt;strong&gt;type-safe&lt;/strong&gt;, and &lt;strong&gt;composable&lt;/strong&gt; configurations in Python.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
