<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[AimStack - Medium]]></title>
        <description><![CDATA[Aim logs your training runs, enables a beautiful UI to compare them and an API to query them programmatically. - Medium]]></description>
        <link>https://medium.com/aimstack?source=rss----d26c2a464e51---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>AimStack - Medium</title>
            <link>https://medium.com/aimstack?source=rss----d26c2a464e51---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 13 Apr 2026 08:35:24 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/aimstack" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Launching Aim on Hugging Face Spaces]]></title>
            <link>https://medium.com/aimstack/launching-aim-on-hugging-face-spaces-5ee2f87d0b7e?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/5ee2f87d0b7e</guid>
            <category><![CDATA[hugging-face]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[integration]]></category>
            <dc:creator><![CDATA[Gor Arakelyan]]></dc:creator>
            <pubDate>Tue, 25 Apr 2023 17:29:56 GMT</pubDate>
            <atom:updated>2023-04-25T17:29:56.189Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9Ye12MCFGLO9Snv4CbIttA.png" /></figure><p>We are excited to announce the launch of Aim on Hugging Face Spaces! 🚀</p><p>With just a few clicks, you can now deploy Aim on the Hugging Face Hub and seamlessly share your training results with anyone.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*z_Nws-SaMejgiJjkp4K_6A.png" /></figure><p>Aim is an open-source, self-hosted AI Metadata tracking tool. It provides a performant and powerful UI for exploring and comparing metadata, such as training runs or AI agents executions. Additionally, its SDK enables programmatic access to tracked metadata — perfect for automations and Jupyter Notebook analysis.</p><p>In this article, you will learn how to deploy and share your own Aim Space. Also, we will have a quick tour over Aim and learn how it can help to explore and compare your training logs with ease. Let’s dive in and get started!</p><p>Learn more about Aim on the GitHub repository: <a href="https://github.com/aimhubio/aim">github.com/aimhubio/aim</a></p><h3>Deploy Aim on Hugging Face Spaces within seconds using the Docker template</h3><p>To get started, simply navigate to the Spaces page on the Hugging Face Hub and click on the “Create new Space” button, or open the page directly by the following link: <a href="https://huggingface.co/new-space?template=aimstack/aim">https://huggingface.co/new-space?template=aimstack/aim</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jnu8QJ3U0Zp6EvM0mBwqSA.png" /></figure><p>Set up your Aim Space in no time:</p><ol><li>Choose a name for your Space.</li><li>Adjust Space hardware and the visibility mode.</li><li>Submit your Space!</li></ol><p>After submitting the Space, you’ll be able to monitor its progress through the building status:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*U3PG3l7jYjoxoxz9PDMhLw.png" /></figure><p>Once it transitions to “Running”, your space is ready to go!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*i5fjIPuwzMJyRRLdl9zUBw.png" /></figure><p>Ta-da! 🎉 You’re all set to start using Aim on Hugging Face.</p><p>By pushing your logs to your Space, you can easily explore, compare, and share them with anyone who has access. Here’s how to do it in just two simple steps:</p><ol><li>Run the following bash command to compress .aim directory:</li></ol><pre>tar -czvf aim_repo.tar.gz .aim</pre><p>2. Commit and push files to your Space.</p><p>That’s it! Now open the App section of your Space, and Aim will display your training logs.</p><p>Updating Spaces is incredibly convenient — you just need to commit the changes to the repository, and it will automatically re-deploy the application for you. 🔥</p><h3>See Aim in Action with Existing Demos on the Hub</h3><p>Let’s explore live Aim demos already available on the Hub. Each demo highlights a distinct use case and demonstrates the power of Aim in action.</p><ul><li>Neural machine translation task: <a href="https://huggingface.co/spaces/aimstack/nmt">https://huggingface.co/spaces/aimstack/nmt</a></li><li>Simple handwritten digits recognition task: <a href="https://huggingface.co/spaces/aimstack/digit-recognition">https://huggingface.co/spaces/aimstack/digit-recognition</a></li><li>Image generation task with lightweight GAN implementation: <a href="https://huggingface.co/spaces/aimstack/image-generation">https://huggingface.co/spaces/aimstack/image-generation</a></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oOCHgOBzSfty_fQZ0QYeRA.png" /></figure><p>When navigating to your Aim Space, you’ll see the Aim homepage, which provides a quick glance at your training statistics and an overview of your logs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NSpYy8lAsp8ODVSWZBNGrA.png" /></figure><p>Open the individual run page to find all the insights related to that run, including tracked hyper-parameters, metric results, system information (CLI args, env vars, Git info, etc.) and visualizations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nn624ts45eF1zF--LpEz-w.png" /></figure><p>Take your training results analysis to the next level with Aim’s Explorers — tools that allow to deeply compare tracked metadata across runs.</p><p>Metrics Explorer, for instance, enables you to query tracked metrics and perform advanced manipulations such as grouping metrics, aggregation, smoothing, adjusting axes scales and other complex interactions.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*z_Nws-SaMejgiJjkp4K_6A.png" /></figure><p>Explorers provide fully Python-compatible expressions for search, allowing you to query metadata with ease.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VlzNBmpxqaGhthMjXJZUUQ.png" /></figure><p>In addition to Metrics Explorer, Aim offers a suite of Explorers designed to help you explore and compare a variety of media types, including images, text, audio, and Plotly figures.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vWfdkFSKK5ZH-0F3ITygHg.png" /></figure><p>Use Aim Space on Hugging Face to effortlessly upload and share your training results with the community in a few steps. Aim empowers you to explore your logs with interactive visualizations at your fingertips, easily compare training runs at scale and be on top of your ML development insights!</p><h3>One more thing… 👀</h3><p>Having Aim logs hosted on Hugging Face Hub, you can embed it in notebooks and websites.</p><p>To embed your Space, construct the following link based on Space owner and Space name: https://owner-space-name.hf.space. This link can be used to embed your Space in any website or notebook using the following HTML code:</p><pre>%%html<br>&lt;iframe<br>    src=&quot;https://owner-space-name.hf.space&quot;<br>    frameborder=&quot;0&quot;<br>    width=100%<br>    height=&quot;800&quot;<br>&gt;<br>&lt;/iframe&gt;</pre><h3>Next steps</h3><p>We are going to continuously iterate over Aim Space onboarding and usability, including:</p><ul><li>the ability to read logs directly from Hugging Face Hub model repos,</li><li>automatic conversion of TensorBoard logs to Aim format,</li><li>Aim HF Space-specific onboarding steps.</li></ul><p>Much more coming soon… stay tuned for the updates!</p><h3>Learn more</h3><p>Check out Aim Space documentation <a href="https://aimstack.readthedocs.io/en/latest/using/huggingface_spaces.html">here</a></p><p>Aim repo on GitHub: <a href="http://github.com/aimhubio/aim">github.com/aimhubio/aim</a></p><p>If you have questions, join the <a href="https://community.aimstack.io/">Aim community</a>, share your feedback, open issues for new features and bugs. You’re most welcome! 🙌</p><p>Drop a ⭐️ on <a href="https://github.com/aimhubio/aim">GitHub</a>, if you find Aim useful.</p><p>This article was originally published on <a href="https://aimstack.io/blog">Aim blog</a>. Find more in depth guides and details of the newest releases there.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5ee2f87d0b7e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/launching-aim-on-hugging-face-spaces-5ee2f87d0b7e">Launching Aim on Hugging Face Spaces</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[LangChain + Aim: Building and Debugging AI Systems Made EASY!]]></title>
            <link>https://medium.com/aimstack/langchain-aim-building-and-debugging-ai-systems-made-easy-de6d183a3198?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/de6d183a3198</guid>
            <category><![CDATA[openai]]></category>
            <category><![CDATA[integration]]></category>
            <category><![CDATA[prompt-engineering]]></category>
            <category><![CDATA[chatgpt]]></category>
            <dc:creator><![CDATA[Gor Arakelyan]]></dc:creator>
            <pubDate>Thu, 06 Apr 2023 18:50:40 GMT</pubDate>
            <atom:updated>2023-06-28T06:29:06.130Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KGZMLgIJyD98QYooWRF9xQ.jpeg" /><figcaption>Generated by Midjourney. Prompted by ChatGPT.</figcaption></figure><h3>The Rise of Complex AI Systems</h3><p>With the introduction of ChatGPT and large language models (LLMs) such as GPT3.5-turbo and GPT4, AI progress has skyrocketed. These models have enabled tons of AI-based applications, bringing the power of LLMs to real-world use cases.</p><p>But the true power of AI comes when we combine LLMs with other tools, scripts, and sources of computation to create much more powerful AI systems than standalone models.</p><p><strong>As AI systems get increasingly complex, the ability to effectively debug and monitor them becomes crucial.</strong> Without comprehensive tracing and debugging, the improvement, monitoring and understanding of these systems become extremely challenging.</p><p>In this article, we will take a look at how to use Aim to easily trace complex AI systems built with LangChain. Specifically, we will go over how to:</p><ul><li>track all inputs and outputs of chains,</li><li>visualize and explore individual chains,</li><li>compare several chains side-by-side.</li></ul><h3>LangChain: Building AI Systems with LLMs</h3><p>LangChain is a library designed to enable the development of powerful applications by integrating LLMs with other computational resources or knowledge sources. It streamlines the process of creating applications such as question answering systems, chatbots, and intelligent agents.</p><p>It provides a unified interface for managing and optimizing prompts, creating sequences of calls to LLMs or other utilities (chains), interacting with external data sources, making decisions and taking actions. LangChain empowers developers to build sophisticated, cutting-edge applications by making the most of LLMs and easily connecting them with other tools!</p><h3>Aim: Upgraded Debugging Experience for AI Systems</h3><p>Monitoring and debugging AI systems requires more than just scanning output logs on a terminal.</p><p><strong>Introducing Aim!</strong></p><p>Aim is an open-source AI metadata library that tracks all aspects of your AI system’s execution, facilitating in-depth exploration, monitoring, and reproducibility.</p><p>Importantly, Aim helps to query all the tracked metadata programmatically and is equipped with a powerful UI / observability layer for the AI metadata.</p><p>In that way, Aim makes debugging, monitoring, comparing different executions a breeze.</p><p><strong>Experience the ultimate control with Aim!</strong></p><p>Check out Aim on GitHub: <a href="http://github.com/aimhubio/aim"><strong>github.com/aimhubio/aim</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3EJstDPipkwPQvqtnPxxqg.jpeg" /></figure><h3>Aim + LangChain = 🚀</h3><p>With the release of LangChain <a href="https://github.com/hwchase17/langchain/releases/tag/v0.0.127"><strong>v0.0.127</strong></a>, it’s now possible to trace LangChain agents and chains with Aim using just a few lines of code! <strong>All you need to do is configure the Aim callback and run your executions as usual.</strong></p><p>Aim does the rest for you by tracking tools and LLMs’ inputs and outputs, agents’ actions, and chains results. As well as, it tracks CLI command and arguments, system info and resource usage, env variables, git info, and terminal outputs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JrNhHaP-w-HyaJh80A7Guw.jpeg" /></figure><p>Let’s move forward and build an agent with LangChain, configure Aim to trace executions, and take a quick journey around the UI to see how Aim can help with debugging and monitoring.</p><h3>Hands-On Example: Building a Multi-Task AI Agent</h3><h4>Setting up the agent and the Aim callback</h4><p>Let’s build an agent equipped with two tools:</p><ul><li>the SerpApi tool to access Google search results,</li><li>the LLM-math tool to perform required mathematical operations.</li></ul><p>In this particular example, we’ll prompt the agent to discover who Leonardo DiCaprio’s girlfriend is and calculate her current age raised to the 0.43 power:</p><pre>tools = load_tools([&quot;serpapi&quot;, &quot;llm-math&quot;], llm=llm, callback_manager=manager)<br>agent = initialize_agent(<br>    tools,<br>    llm,<br>    agent=&quot;zero-shot-react-description&quot;,<br>    callback_manager=manager,<br>    verbose=True,<br>)<br>agent.run(<br>    &quot;Who is Leo DiCaprio&#39;s girlfriend? What is her current age raised to the 0.43 power?&quot;<br>)</pre><p>Now that the chain is set up, let’s integrate the Aim callback. It takes just a few lines of code and Aim will capture all the moving pieces during the execution.</p><pre>from langchain.callbacks import AimCallbackHandler<br><br>aim_callback = AimCallbackHandler(<br>    repo=&quot;.&quot;,<br>    experiment_name=&quot;scenario 1: OpenAI LLM&quot;,<br>)<br>aim_callback.flush_tracker(langchain_asset=agent, reset=False, finish=True)</pre><blockquote><strong><em>Aim is entirely open-source and self-hosted, which means your data remains private and isn’t shared with third parties.</em></strong></blockquote><p>Find the full script and more examples in the official LangChain docs: <a href="https://python.langchain.com/docs/ecosystem/integrations/aim_tracking">https://python.langchain.com/docs/ecosystem/integrations/aim_tracking</a></p><h4>Executing the agent and running Aim</h4><p>Before executing the agent, ensure that Aim is installed by executing the following command:</p><pre>pip install aim</pre><p>Now, let’s run multiple executions and launch the Aim UI to visualize and explore the results:</p><ol><li>execute the script by running python example.py,</li><li>then, start the UI with aim up command.</li></ol><p>With the Aim up and running, you can effortlessly dive into the details of each execution, compare results, and gain insights that will help you to debug and iterate over your chains.</p><h4>Exploring executions via Aim</h4><p><strong>Home page</strong></p><p>On the home page, you’ll find an organized view of all your tracked executions, making it easy to keep track of your progress and recent runs. To navigate to a specific execution, simply click on the link, and you’ll be taken to a dedicated page with comprehensive information about that particular execution.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-MMZ7h2f22moAkI3mP2rDg.jpeg" /></figure><p><strong>Deep dive into a single execution</strong></p><p>When navigating to an individual execution page, you’ll find an overview of system information and execution details. Here you can access:</p><ul><li>CLI command and arguments,</li><li>Environment variables,</li><li>Packages,</li><li>Git information,</li><li>System resource usage,</li><li>and other relevant information about an individual execution.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_VZBpIrHzxXJh4oaMdTEwQ.jpeg" /></figure><p>Aim automatically captures terminal outputs during execution. Access these logs in the “Logs” tab to easily keep track of the progress of your AI system and identify issues.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zD08oly3keyx93owbEYf6g.jpeg" /></figure><p>In the “Text” tab, you can explore the inner workings of a chain, including agent actions, tools and LLMs inputs and outputs. This in-depth view allows you to review the metadata collected at every step of execution.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CYLkqn4TAJ-p89MiE1I83Q.jpeg" /></figure><p>With Aim’s Text Explorer, you can effortlessly compare multiple executions, examining their actions, inputs, and outputs side by side. It helps to identify patterns or spot discrepancies.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3EJstDPipkwPQvqtnPxxqg.jpeg" /></figure><p>For instance, in the given example, two executions produced the response, “Camila Morrone is Leo DiCaprio’s girlfriend, and her current age raised to the 0.43 power is 3.8507291225496925.” However, another execution returned the answer “3.991298452658078”. This discrepancy occurred because the first two executions incorrectly identified Camila Morrone’s age as 23 instead of 25.</p><p><strong>With Text Explorer, you can easily compare and analyze the outcomes of various executions and make decisions to adjust agents and prompts further.</strong></p><h3>Wrapping Up</h3><p>In conclusion, as AI systems become more complex and powerful, the need for comprehensive tracing and debugging tools becomes increasingly essential. LangChain, when combined with Aim, provides a powerful solution for building and monitoring sophisticated AI applications. By following the practical examples in this blog post, you can effectively monitor and debug your LangChain-based systems!</p><h3>Learn more</h3><p>Check out the Aim + LangChain integration docs <a href="https://python.langchain.com/en/latest/ecosystem/aim_tracking.html">here</a>.</p><p>LangChain repo: <a href="https://github.com/hwchase17/langchain">https://github.com/hwchase17/langchain</a></p><p>Aim repo: <a href="https://github.com/aimhubio/aim">https://github.com/aimhubio/aim</a></p><p>If you have questions, join the <a href="https://community.aimstack.io/">Aim community</a>, share your feedback, open issues for new features and bugs. You’re most welcome! 🙌</p><p>Drop a ⭐️ on <a href="https://github.com/aimhubio/aim">GitHub</a>, if you find Aim useful.</p><p>This article was originally published on <a href="https://aimstack.io/blog">Aim blog</a>. Find more in depth guides and details of the newest releases there.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=de6d183a3198" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/langchain-aim-building-and-debugging-ai-systems-made-easy-de6d183a3198">LangChain + Aim: Building and Debugging AI Systems Made EASY!</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Reproducible forecasting with Prophet and Aim]]></title>
            <link>https://medium.com/aimstack/reproducible-forecasting-with-prophet-and-aim-f2e2a80a356f?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/f2e2a80a356f</guid>
            <category><![CDATA[integration]]></category>
            <category><![CDATA[prophet]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[mlops]]></category>
            <dc:creator><![CDATA[Davit Grigoryan]]></dc:creator>
            <pubDate>Tue, 14 Mar 2023 18:55:52 GMT</pubDate>
            <atom:updated>2023-03-15T09:44:45.816Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZaIDQvLbqy0KyVG22D0epw.png" /></figure><p>You can now track your Prophet experiments with Aim! The recent Aim v3.16 release includes a built-in logger object for Prophet runs. It tracks Prophet hyperparameters, arbitrary user-defined metrics, extra feature variables, and system metrics. These features, along with the intuitive Aim UI and its pythonic search functionality can significantly improve your Prophet workflow and accelerate the model training and evaluation process.</p><h3>What is Aim?</h3><p><a href="https://aimstack.io/">Aim</a> is the fastest open-source tool for AI experiment comparison. With more resources and complex models, more experiments are ran than ever. Aim is used to deeply inspect thousands of hyperparameter-sensitive training runs.</p><h3>What is Prophet?</h3><p><a href="https://research.facebook.com/blog/2017/2/prophet-forecasting-at-scale/">Prophet</a> is a time series forecasting algorithm developed by Meta. Its official implementation is open-sourced, with libraries for Python and R.</p><p>A key benefit of Prophet is that it does not assume stationarity and can automatically find trend changepoints and seasonality. This makes it easy to apply to arbitrary forecasting problems without many assumptions about the data.</p><h3>Tracking Prophet experiments with Aim</h3><p>Prophet isn’t trained like neural networks, so you can’t track per-epoch metrics or anything of the sort. However, Aim allows the user to track Prophet hyperparameters and arbitrary user-defined metrics to compare performance across models, as well as system-level metrics like CPU usage. In this blogpost we’re going to see how to integrate Aim with your Prophet experiments with minimal effort. For many more end-to-end examples of usage with other frameworks, check out <a href="https://github.com/aimhubio/aim/tree/main/examples">the repo</a>.</p><p>In the simple example below, we generate synthetic time series data in the format required by Prophet, then train and test a single model with default hyperparameters, tracking said hyperparameters using an AimLogger object. Then, we calculate MSE and MAE and add those metrics to the AimLogger. As you can see, this snippet can easily be extended to work with hyperparameter search workflows.</p><pre>from aim.from aim.prophet import AimLogger<br>...<br><br>model = Prophet()<br>logger = AimLogger(prophet_model=model, repo=&quot;.&quot;, experiment=&quot;prophet_test&quot;)<br>...<br><br>metrics = {<br>    &quot;mse&quot;: mean_squared_error(test[&quot;y&quot;], preds.iloc[4000:][&quot;yhat&quot;]),<br>    &quot;mae&quot;: mean_absolute_error(test[&quot;y&quot;], preds.iloc[4000:][&quot;yhat&quot;]),<br>}<br>logger.track_metrics(metrics)</pre><p>Additionally, if you’re working with multivariate time series data, you can use Aim to track different dependent variable configurations to see which combination results in the best performance (however, be mindful of the fact that you need to know the future values of your features to forecast your target variable). Here’s a simple code snippet doing just that:</p><pre># Here, we add an extra variable to our dataset<br>data = pd.DataFrame(<br>    {<br>   &quot;y&quot;: np.random.rand(num_days, 1),<br>   &quot;ds&quot;: rng,<br>   &quot;some_feature&quot;: np.random.randint(10, 20, num_days),<br>  }<br>)<br><br>model = Prophet()<br># Prophet won&#39;t use the &quot;some_feature&quot; variable without the following line<br>model.add_regressor(&quot;some_feature&quot;)<br>logger = AimLogger(prophet_model=model, repo=&quot;.&quot;, experiment=&quot;prophet_with_some_feature&quot;)</pre><p>Now, the extra feature(s) will be tracked as a hyperparameter called <strong>extra_regressors</strong>.</p><p>Take a look at a simple, end-to-end example <a href="https://github.com/aimhubio/aim/blob/main/examples/prophet_track.py">here</a>.</p><h3>Viewing experiment logs</h3><p>After running the experiment, we can view the logs by executing aim up from the command line in the aim_logs directory. When the UI is opened, we can see the logs of all the experiments with their corresponding metrics and hyperparameters by navigating to prophet_test/runs and selecting the desired run.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Aw3FjV81meA0C_UbMG7bnQ.png" /></figure><p>Additionally, we can monitor system metrics, environment variables, and packages installed in the virtual environment, among other things.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*Syw9V1IQLf78fAqp-HYXRA.gif" /></figure><p>These features make it easy to track and compare different Prophet experiments on an arbitrary number of metrics, both accuracy and performance-related.</p><h3>Using Aim’s Pythonic search to filter metrics and hyperparameters</h3><p>Given the same dataset and the same hyperparameters, Prophet is guaranteed to produce the same exact model, which means the metrics will be the same. However, if we’re working with several time series (e.g. forecasting demand using different factors), we might want to fit many different Prophet models to see which factors have a bigger effect on the target variable. Similarly, we might want to filter experiments by hyperparameter values. In cases like these, Aim’s <em>pythonic search</em> functionality can be super useful. Say we only want to see the models with MAE ≤ 0.25. We can go to the metrics section and search exactly like we would in Python, say ((metric.name == &quot;mae&quot;) and (metric.last &lt;= 0.25)) (the <strong>last</strong> part is meant for neural networks, where you might want to see the metric at the last epoch). Here’s a visual demonstration of this feature:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*w6tJtlwtY4v7RHXf5E_mBg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PhsN41wOUX-giiwhJXg6NA.png" /></figure><p>As you can see, filtering based on the metrics is super easy and convenient. The pythonic search functionality can also be used to filter based on other parameters.</p><h3>Conclusion</h3><p>To sum up, Aim’s integration with Prophet allows one to easily track an arbitrary amount of Prophet runs with different hyperparameters and feature variable configurations, as well as arbitrary user-defined metrics, while also allowing one to monitor system performance and see how much resources model training consumes. Aim UI also makes it easy to filter runs based on hyperparameter and metric values with its <em>pythonic search</em> functionality. All these features can make forecasting with Prophet a breeze!</p><h3>Learn More</h3><p><a href="https://aimstack.readthedocs.io/en/latest/overview.html">Aim is on a mission to democratize AI dev tools.</a></p><p>We have been incredibly lucky to get help and contributions from the amazing Aim community. It’s humbling and inspiring 🙌</p><p>Try out <a href="https://github.com/aimhubio/aim">Aim</a>, join the <a href="https://community.aimstack.io/">Aim community</a>, share your feedback, open issues for new features and bugs.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f2e2a80a356f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/reproducible-forecasting-with-prophet-and-aim-f2e2a80a356f">Reproducible forecasting with Prophet and Aim</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hugging the Chaos: Connecting Datasets to Trainings with Hugging Face and Aim]]></title>
            <link>https://medium.com/aimstack/hugging-the-chaos-connecting-datasets-to-trainings-with-hugging-face-and-aim-141ed680e603?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/141ed680e603</guid>
            <category><![CDATA[mlops]]></category>
            <category><![CDATA[hugging-face]]></category>
            <category><![CDATA[dataset]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[pytorch]]></category>
            <dc:creator><![CDATA[Gor Arakelyan]]></dc:creator>
            <pubDate>Thu, 16 Feb 2023 21:20:15 GMT</pubDate>
            <atom:updated>2023-02-16T21:20:15.395Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-luoNtZBpA1SGkTsHzCrkA.jpeg" /><figcaption>Generated by Midjourney</figcaption></figure><h3>The cost of neglecting experiments management</h3><p>Working with large and frequently changing datasets is hard!<br>You can easily end up in a mess if you don’t have a system that traces dataset versions and connects them to your experiments. Moreover, the lack of traceability can make it impossible to effectively compare your experiments. Let alone the reproducibility.</p><p>In this article, we will explore how you can combine <a href="https://github.com/huggingface/datasets">Hugging Face Datasets</a> and <a href="https://github.com/aimhubio/aim">Aim</a> to make machine learning experiments traceable, reproducible and easier to compare.</p><p>Let’s dive in and get started!</p><h3>Hugging Face Datasets + Aim = ❤</h3><p><a href="https://github.com/huggingface/datasets">Hugging Face Datasets</a> is a fantastic library that makes it super easy to access and share datasets for audio, computer vision, and NLP tasks. With Datasets, you’ll never have to worry about manually loading and versioning your data again.</p><p><a href="https://github.com/aimhubio/aim">Aim</a>, on the other hand, is an easy-to-use and open-source experiment tracker with lots of superpowers. It enables easily logging training runs, comparing them via a beautiful UI, and querying them programmatically.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MeZVBvuC_vExlOoZUT84mw.png" /></figure><p>Hugging Face Datasets and Aim combined are a powerful way to track training runs and their respective dataset metadata. So you can compare your experiments based on the dataset version and reproduce them super seamlessly.</p><h3>Project overview</h3><p>Let’s go through an object classification project and show how you can use Datasets to load and version your data, and Aim to keep track of everything along the way.</p><p>Here’s what we’ll be using:</p><ul><li><a href="https://github.com/huggingface/datasets">Hugging Face Datasets</a> to load and manage the dataset.</li><li><a href="http://huggingface.co">Hugging Face Hub</a> to host the dataset.</li><li><a href="https://github.com/pytorch/pytorch">PyTorch</a> to build and train the model.</li><li><a href="https://github.com/aimhubio/aim">Aim</a> to keep track of all the model and dataset metadata.</li></ul><p>Our dataset is going to be called “A-MNIST” — a version of the “MNIST” dataset with extra samples added. We’ll start with the original “MNIST” dataset and then add 60,000 rotated versions of the original training samples to create a new, augmented version. We will run trainings on both dataset versions and see how the models are performing.</p><h3>Dataset preparation</h3><h4>Uploading the dataset to Hub</h4><p>Let’s head over to Hugging Face Hub and create a new dataset repository called <a href="https://huggingface.co/datasets/gorar/A-MNIST">“A-MNIST”</a> to store our dataset.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lK4w_iokcetDnyOi9HgZbw.png" /></figure><p>Currently, the repository is empty, so let’s upload the initial version of the dataset.</p><p>We’ll use the original MNIST dataset, as the first version v1.0.0. To do this, we’ll need to upload the dataset files along with the dataset loading script A-MNIST.py. The dataset loading script is a python file that defines the different configurations and splits of the dataset, as well as how to download and process the data:</p><pre>class AMNIST(datasets.GeneratorBasedBuilder):<br>    &quot;&quot;&quot;A-MNIST Data Set&quot;&quot;&quot;<br><br>    BUILDER_CONFIGS = [<br>            datasets.BuilderConfig(<br>                name=&quot;amnist&quot;,<br>                version=datasets.Version(&quot;1.0.0&quot;),<br>                description=_DESCRIPTION,<br>            )<br>        ]<br>    ...</pre><p><em>See the full script here: </em><a href="https://huggingface.co/datasets/gorar/A-MNIST/blob/main/A-MNIST.py"><em>https://huggingface.co/datasets/gorar/A-MNIST/blob/main/A-MNIST.py</em></a></p><p>We’ll have the following setup, including all the necessary git configurations and the dataset card:</p><pre>- `data` - contains the dataset.<br>    - `t10k-images-idx3-ubyte.gz` - test images.<br>    - `t10k-labels-idx1-ubyte.gz` - test labels.<br>    - `train-images-idx3-ubyte.gz` - train images.<br>    - `train-labels-idx1-ubyte.gz` - train labels.<br>- `A-MNIST.py` - the dataset loading script.</pre><p>Let’s commit the changes and push the dataset to the Hub.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kzEHq-JVe6AyNm6xUPIWzg.png" /></figure><p>Awesome! Now we’ve got the first version of “A-MNIST” hosted on Hugging Face Hub!</p><h4>Augmenting the dataset</h4><p>Next up, let’s add more images to the MNIST dataset using augmentation techniques.</p><p>We will rotate all the train images by 20 degree and append to the dataset:</p><pre>rotated_images[i] = rotate(images[i], angle=20, reshape=False)</pre><p>As well as, update the “A-MNIST” dataset version to 1.1.0:</p><pre>BUILDER_CONFIGS = [<br>    datasets.BuilderConfig(<br>        name=&quot;amnist&quot;,<br>        version=datasets.Version(&quot;1.1.0&quot;),<br>        description=_DESCRIPTION,<br>    )<br>]</pre><p>After preparing the new train dataset, let’s commit the changes and push the upgraded version to the hub.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yoIdeuBE1pB0VMh-ZAY7Rw.png" /></figure><p>Perfect, v1.1.0 is now available on the Hub! This means that we can easily access it in the training script using the Hugging Face Datasets. 🎉</p><h3>Training setup</h3><p>Let’s load the dataset using datasets python package. It’s really simple, just one line of code:</p><pre>dataset = load_dataset(&quot;gorar/A-MNIST&quot;)</pre><p>One of the amazing features of datasets is that is has native support for PyTorch, which allows us to prepare and initialize dataset loaders with ease:</p><pre>from datasets import load_dataset<br>from torch.utils.data import DataLoader<br><br># Loading the dataset<br>dataset = load_dataset(&quot;gorar/A-MNIST&quot;)<br><br># Defining train and test splits<br>train_dataset = dataset[&#39;train&#39;].with_format(&#39;torch&#39;)<br>test_dataset = dataset[&#39;test&#39;].with_format(&#39;torch&#39;)<br><br># Initializing data loaders for train and test split<br>train_loader = DataLoader(dataset=train_dataset, batch_size=4, shuffle=True)<br>test_loader = DataLoader(dataset=test_dataset, batch_size=4, shuffle=True)</pre><p>We’re ready to write the training script and build the model. We are using PyTorch to build a simple convolutional neural network with two convolutional layers:</p><pre>class ConvNet(nn.Module):<br>    def __init__(self, num_classes=10):<br>        super(ConvNet, self).__init__()<br>        self.layer1 = nn.Sequential(<br>            nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=2),<br>            nn.BatchNorm2d(16),<br>            nn.ReLU(),<br>            nn.MaxPool2d(kernel_size=2, stride=2))<br>        self.layer2 = nn.Sequential(<br>            nn.Conv2d(16, 32, kernel_size=5, stride=1, padding=2),<br>            nn.BatchNorm2d(32),<br>            nn.ReLU(),<br>            nn.MaxPool2d(kernel_size=2, stride=2))<br>        self.fc = nn.Linear(7 * 7 * 32, num_classes)<br><br>    def forward(self, x):<br>        out = self.layer1(x)<br>        out = self.layer2(out)<br>        out = out.reshape(out.size(0), -1)<br>        out = self.fc(out)<br>        return out<br>...</pre><p><em>See the full code here: </em><a href="https://gist.github.com/gorarakelyan/936fb7b8fbde4de807500c5617b47ea8"><em>https://gist.github.com/gorarakelyan/936fb7b8fbde4de807500c5617b47ea8</em></a></p><p>We’ve got everything ready now. Let’s kick off the training by running:</p><pre>python train.py</pre><p>Hurray, the training is underway! 🏃</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YYTjRUMNbr_1e9mFX0tyhw.png" /></figure><p>It would be tough to monitor my training progress on terminal. This is where Aim’s superpowers come into play.</p><h3>Integrating Aim</h3><h4>Trainings tracking</h4><p>Aim offers a user-friendly interface to keep track of your training hyper-parameters and metrics:</p><pre>import aim<br><br>aim_run = aim.Run()<br><br># Track hyper-parameters<br>aim_run[&#39;hparams&#39;] = {<br>    &#39;num_epochs&#39;: num_epochs,<br>    &#39;num_classes&#39;: num_classes,<br>    ...<br>}<br><br># Track metrics<br>for i, samples in enumerate(train_loader):<br>    ...<br>    aim_run.track(acc, name=&#39;accuracy&#39;, epoch=epoch, context={&#39;subset&#39;: &#39;train&#39;})<br>    aim_run.track(loss, name=&#39;loss&#39;, epoch=epoch, context={&#39;subset&#39;: &#39;train&#39;})</pre><p>Furthermore, the awesome thing about Aim is that it is tightly integrated with ML ecosystem.</p><p>Since v3.16, Aim has a builtin integration with Hugging Face Datasets. Simply import HFDataset module from Aim and you can track all of your dataset metadata with just a single line of code!</p><pre>from aim.hf_dataset import HFDataset<br><br>aim_run[&#39;dataset&#39;] = HFDataset(dataset)</pre><p>Aim will automagically gather the metadata from the dataset instance, store it within the Aim run, and display it on the Aim UI run page, including details like the dataset’s description, version, features, etc.</p><h3>Experimentation</h3><h4>Conducting trainings</h4><p>We’ll perform several training runs on both versions of the datasets and adjust learning rates to evaluate their impact on the training process. Specifically, we’ll use 1.0.0 and 1.1.0 versions of our dataset, and experiment with 0.01, 0.03, 0.1, 0.3 learning rates.</p><p>Datasets provide the ability to choose which dataset version we want to load. To do this, we just need to pass version and git revision of the dataset we want to work with:</p><pre># Loading A-MNIST v1.0.0<br>dataset = load_dataset(&quot;gorar/A-MNIST&quot;, version=&#39;1.0.0&#39;, revision=&#39;dcc966eb0109e31d23c699199ca44bc19a7b1b47&#39;)<br><br># Loading A-MNIST v1.1.0<br>dataset = load_dataset(&quot;gorar/A-MNIST&quot;, version=&#39;1.1.0&#39;, revision=&#39;da9a9d63961462871324d514ca8cdca1e5624c5c&#39;)</pre><p>We will run a simple bash script to execute the trainings. However, for a more comprehensive hyper-parameters tuning approach, tools like Ray Tune or other tuning frameworks can be used.</p><h4>Exploring training results via Aim</h4><p>Now that we have integrated Aim into our training process, we can explore the results in a more user-friendly way. To launch Aim’s UI, we need to run the aim up command. A following message would be printed on the terminal output meaning the UI is successfully running:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cfU9n1gY6pEJg4G2CJ8y9w.png" /></figure><p>To access the UI, let’s navigate to 127.0.0.1:43800 in the browser.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FHcB19xB7dEj9kGdEEMEZA.png" /></figure><p>We can see our trainings on the contributions map and in the activity feed. Let’s take a closer look at an individual run details by navigating to the run’s page on the UI.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3TwA3xW06wD98adH2UF3wA.png" /></figure><p>All of the information is displayed in an organized and easy-to-read manner, allowing us to quickly understand how our training is performing and identify any potential issues.</p><p>We can view the tracked hyper-parameters, metadata related to the dataset, and metrics results. Additionally, Aim automatically gathers information like system resource usage and outputs from the terminal.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fSYcQgvpzbFvan_E7ygvIw.png" /></figure><p>The UI also provides tools for visualizing and comparing results from multiple runs, making it easy to compare different model architectures, hyper-parameter and dataset settings to determine the best approach for a given problem.</p><h4>Comparing trainings via Aim</h4><p>Let’s find out which models performed the best. We can easily compare the metrics of all the runs by opening up the Metrics Explorer 127.0.0.1:43800/metrics.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PNQIEWDX5oKKz7CyBY0okw.png" /></figure><p>Aim is very powerful when it comes to filtering runs and grouping. It provides an ability to group metrics based on any tracked metadata value.</p><p>Let’s group by run.dataset.dataset.meta.version to see how the models performed based on the dataset version they were trained on.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4yg-joaFpEIrfVcbc5LMMg.png" /></figure><p>According to the legends section, the green lines represent models that were trained on the v1.0.0 dataset (the original MNIST dataset), while the blue metrics represent models trained on v1.1.0, an augmented dataset.</p><p>Now, to improve visibility and better evaluate performance, let’s go ahead and smooth out these lines.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HhgXxth5iZHZ2XHmwuA_Dg.png" /></figure><p>It appears that both models performed similarly on both dataset versions. Since we also experimented with the learning rate hyper-parameter, let’s group metrics by the learning rate to learn its impact on models performance.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dd_VOX2BLPShEmVqPN3byw.png" /></figure><p>It seems that the blue lines, associated with a learning rate of 0.01, demonstrated the best performance!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dxSto6wosNPeO-P7orw4cg.png" /></figure><p>To sum it up, regardless of the dataset version, the models trained with a learning rate of 0.01 came out on top in terms of performance.</p><p>With just a few clicks, we were able to compare different runs based on the dataset and learning rate value they were trained on! 🎉</p><h3>Reproducibility</h3><p>Have you noticed how we achieved out-of-the-box reproducibility with the Hugging Face datasets and Aim integration? By versioning the dataset and keeping track of its revision, we can effortlessly reproduce experiments using the same dataset it was previously trained on.</p><p>Aim stores model hyper-parameters, dataset metadata and other moving pieces, which allows us to quickly recreate and analyze previous experiments!</p><h3>Conclusion</h3><p>In this article, we took a closer look at how to get started with uploading and using datasets through the Hugging Face Hub and Datasets. We carried out a series of trainings, and Aim helped us keep track of all the details and made it easier to stay organized.</p><p>We compared the results of the trainings conducted on different versions of the dataset. As well as, discovered how helpful the combination of Datasets and Aim can be for reproducing previous runs.</p><p>Simplifying our daily work with efficient stack helps us focus on what really matters — getting the best results from our machine learning experiments.</p><h3>Learn more</h3><p>Check out the Aim + Datasets integration docs <a href="https://aimstack.readthedocs.io/en/latest/quick_start/supported_types.html#logging-huggingface-datasets-dataset-info-with-aim">here</a>.<br>Datasets repo: <a href="https://github.com/huggingface/datasets">https://github.com/huggingface/datasets</a><br>Aim repo: <a href="https://github.com/aimhubio/aim">https://github.com/aimhubio/aim</a></p><p>If you have questions, join the <a href="https://community.aimstack.io/">Aim community</a>, share your feedback, open issues for new features and bugs. You’re most welcome! 🙌</p><p>Drop a ⭐️ on <a href="https://github.com/aimhubio/aim">GitHub</a>, if you find Aim useful.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=141ed680e603" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/hugging-the-chaos-connecting-datasets-to-trainings-with-hugging-face-and-aim-141ed680e603">Hugging the Chaos: Connecting Datasets to Trainings with Hugging Face and Aim</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Aim v3.16 — Run messages in UI, TensorBoard real-time sync, integration with Hugging Face Datasets]]></title>
            <link>https://medium.com/aimstack/aim-v3-16-run-messages-in-ui-tensorboard-real-time-sync-integration-with-hugging-face-datasets-8342172ff99?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/8342172ff99</guid>
            <category><![CDATA[mlops]]></category>
            <category><![CDATA[experiment-tracking]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Gor Arakelyan]]></dc:creator>
            <pubDate>Wed, 15 Feb 2023 18:58:28 GMT</pubDate>
            <atom:updated>2023-02-15T18:58:28.600Z</atom:updated>
            <content:encoded><![CDATA[<h3>Aim v3.16 — Run messages in UI, TensorBoard real-time sync, integration with Hugging Face Datasets</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G-AzW2_QT8nvsgLUQH9JeA.png" /></figure><p>Hey community, excited to announce Aim v3.16 is out! 🚀 It is packed with new integrations and key enhancements.</p><blockquote><em>We are on a mission to democratize AI dev tools and are incredibly lucky to have the support of the community. Every question and every issue makes Aim better!</em></blockquote><blockquote><em>Congratulations to </em><a href="https://github.com/timokau"><em>timokau,</em></a><em> </em><a href="https://github.com/dsblank"><em>dsblank</em></a><em> and </em><a href="https://github.com/grigoryan-davit"><em>grigoryan-davit</em></a><em> for their first contributions. 🙌</em></blockquote><h3>Key highlights</h3><h4><strong>Run messages tab in UI</strong></h4><p>Starting from version 3.15, Aim has enabled an ability to <a href="https://aimstack.readthedocs.io/en/latest/using/logging.html">log training messages</a> and even <a href="https://aimstack.readthedocs.io/en/latest/using/notifications.html">send notifications</a> to Slack or Workplace.</p><p>With the version 3.16, you’ll be able to view all your <a href="https://aimstack.readthedocs.io/en/latest/using/logging.html">run messages</a> right in the UI. All the information you need is just a click away! 💫</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PxqbmJJcqYaH1tLmcg59Xw.png" /></figure><h4><strong>Real-time sync with TensorBoard logs</strong></h4><p>Aim smoothly integrates with experiment tracking tools. If you’re part of a team that’s already deeply integrated TensorBoard into your projects and pipelines, you will love this enhancement.</p><p>With just one simple line of code, you can integrate Aim with your existing TensorBoard projects. This means that all your logs will be automatically converted to Aim format in real-time. 🔥🔥🔥</p><pre>from aim.ext.tensorboard_tracker import Run<br><br>aim_run = Run(<br>    sync_tensorboard_log_dir=&#39;TB_LOG_DIR_TO_SYNC_RUNS&#39;<br>)</pre><h4><strong>Support for Python 3.11</strong></h4><p>The Python community has received fantastic news towards the end of 2022. The stable Python 3.11 has been officially released!</p><p>With Aim 3.16 release, you can install and use Aim in your python 3.11 projects. 🎉</p><pre>pip3.11 install aim</pre><h4><strong>Dropped support for Python 3.6</strong></h4><p>Time to say goodbye: Python 3.6 has reached the end-of-life. 💀</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WpHtGUIfWc5RXtDk0TNKTQ.png" /></figure><p>This change allows us to take advantage of the latest advancements in the Python language and provide you with a more robust and reliable library.</p><p>Please note that if you have been using Aim in your Python 3.6 projects, you will need to upgrade to newer Python versions in order to continue using Aim.</p><p><strong>We apologize for any inconvenience this may cause, but rest assured that the improved stability of Aim will make it worth the transition.</strong></p><h3>New integrations</h3><p>Aim 3.16 is packed with new integrations with favorite ML tools!</p><h4><strong>Aim + Hugging Face Datasets = ❤</strong></h4><p>Happy to share now you can easily track and store dataset metadata in Aim run and explore it on the UI.</p><pre>from datasets import load_dataset<br><br>from aim import Run<br>from aim.hf_dataset import HFDataset<br><br># Load the dataset<br>dataset = load_dataset(&#39;rotten_tomatoes&#39;)<br><br># Store the dataset metadata<br>run = Run()<br>run[&#39;datasets_info&#39;] = HFDataset(dataset)</pre><p>See the docs <a href="https://aimstack.readthedocs.io/en/latest/quick_start/supported_types.html#logging-huggingface-datasets-dataset-info-with-aim">here</a>.</p><h4><strong>Aim + Acme = ❤</strong></h4><p>Aim’s been added a built-in support for tracking <a href="https://dm-acme.readthedocs.io/en/latest/">Acme</a> trainings. It takes few simple steps to integrate Aim into your training script.</p><ol><li>Explicitly import the AimCallback and AimWriter for tracking training metadata:</li></ol><pre>from aim.sdk.acme import AimCallback, AimWriter</pre><p>2. Initialize an Aim Run via AimCallback, and create a log factory:</p><pre>aim_run = AimCallback(repo=&quot;.&quot;, experiment_name=&quot;acme_test&quot;)<br><br>def logger_factory(<br>    name: str,<br>    steps_key: Optional[str] = None,<br>    task_id: Optional[int] = None,<br>) -&gt; loggers.Logger:<br>    return AimWriter(aim_run, name, steps_key, task_id)</pre><p>3. Pass the logger factory to logger_factory upon initiating your training:</p><pre>experiment_config = experiments.ExperimentConfig(<br>    builder=d4pg_builder,<br>    environment_factory=make_environment,<br>    network_factory=network_factory,<br>    logger_factory=logger_factory,<br>    seed=0,<br>    max_num_actor_steps=5000)</pre><p>See the docs <a href="https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-acme">here</a>.</p><h4><strong>Aim + Stable-Baselines3 = ❤</strong></h4><p>Now you can easily track <a href="https://stable-baselines3.readthedocs.io/en/master/">Stable-Baselines3</a> trainings with Aim. It takes two steps to integrate Aim into your training script.</p><ol><li>Explicitly import the AimCallback for tracking training metadata:</li></ol><pre>from aim.sb3 import AimCallback</pre><p>2. Pass the callback to callback upon initiating your training:</p><pre>model.learn(total_timesteps=10_000, callback=AimCallback(repo=&#39;.&#39;, experiment_name=&#39;sb3_test&#39;))</pre><p>See the docs <a href="https://aimstack.readthedocs.io/en/latest/quick_start/integrations.html#integration-with-stable-baselines3">here</a>.</p><h3>Learn more</h3><p><a href="https://aimstack.readthedocs.io/en/latest/overview.html">Aim is on a mission to democratize AI dev tools.</a> 🙌</p><p>Try out <a href="https://github.com/aimhubio/aim">Aim</a>, join the <a href="https://community.aimstack.io">Aim community</a>, share your feedback, open issues for new features, bugs.</p><p>Don’t forget to leave us a star on <a href="https://github.com/aimhubio/aim">GitHub</a> if you think Aim is useful. ⭐️</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8342172ff99" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/aim-v3-16-run-messages-in-ui-tensorboard-real-time-sync-integration-with-hugging-face-datasets-8342172ff99">Aim v3.16 — Run messages in UI, TensorBoard real-time sync, integration with Hugging Face Datasets</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Aim and MLflow — Choosing Experiment Tracker for Zero-Shot Cross-Lingual Transfer]]></title>
            <link>https://medium.com/aimstack/aim-and-mlflow-choosing-experiment-tracker-for-zero-shot-cross-lingual-transfer-4bad0a199fc7?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/4bad0a199fc7</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[machine-learning-tools]]></category>
            <dc:creator><![CDATA[Hovhannes Tamoyan]]></dc:creator>
            <pubDate>Mon, 13 Feb 2023 20:31:05 GMT</pubDate>
            <atom:updated>2023-02-14T16:57:38.897Z</atom:updated>
            <content:encoded><![CDATA[<h3>Aim and MLflow — Choosing Experiment Tracker for Zero-Shot Cross-Lingual Transfer</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*v64PbdBn6kBvsH3t5bkv8w.png" /></figure><p>The release of aimlflow sparked user curiosity, a tool that facilitates seamless integration of a powerful experiment tracking user interface of Aim with MLflow logs.</p><p>The question arises as to why we need aimlflow or why we need to view MLflow tracked logs on Aim. The answer is that Aim provides a highly effective user interface that reveals the potential for gaining valuable insights.</p><p>In this blog post, we will address the zero-shot cross-lingual transfer task in NLP, and subsequently, monitor the metadata using both Aim and MLflow. Finally, we will attempt to obtain insightful observations from our experiments through the utilization of their respective user interfaces.</p><h3>Task Setup</h3><p>The task that we will be tackling in this scope is the zero-shot cross-lingual transfer. Zero-shot cross-lingual transfer refers to a machine learning technique where a model is trained in one language but is able to perform well in another language without any additional fine-tuning. This means that the model has the ability to generalize its understanding of the task across different languages without the need for additional training data.</p><p>Particularly, we will train a model for the natural language inference task (NLI) on the English dataset and then classify the label of a given sample written in a different language, without additional training. This approach is useful in situations where labeled data is scarce in some languages and plentiful in others.</p><p>Zero-shot cross-lingual transfer can be achieved through various methods, including cross-lingual word embeddings and shared multilingual representations learned in a common space (multilingual language model), the latter is widely used.</p><p>We will explore two techniques in our experimentation:</p><ul><li>Fine-tuning the entire pre-trained multilingual language model. Adjusting the weights of the network to solve the given classification task, resuming training from the last state of a pre-trained model.</li><li>Feature extraction which refers to attaching a classification head on top of the pre-trained language model and only training that portion of the network.</li></ul><p>In both techniques, we will undertake training utilizing the en subset of the XNLI dataset. Following this, we will conduct evaluations on our evaluation set, consisting of six language subsets from the XNLI dataset, including English(en), German(de), French(fr), Spanish(es), Chinese(zh), and Arabic(ar).</p><h3>The Datasets</h3><p>We will utilize the XNLI (cross-lingual NLI) dataset, which is a selection of a few thousand examples from the MNLI (multi NLI) dataset, translated into 14 different languages, including some with limited resources.</p><p>The template of the NLI task is as follows. Given a pair of sentences, a premise and a hypothesis need to determine whether a hypothesis is true (entailment), false (contradiction), or undetermined (neutral) given a premise.</p><p>Let’s take a look at a few samples to get hang of it. Say the given hypothesis is “<em>Issues in Data Synthesis.</em>” and the premise is “<em>Problems in data synthesis.</em>”. Now there are 3 options whether this hypothesis entails the premise, contradicts, or is neutral. In this pair of sentences, it is obvious that the answer is entailment because the words issues and problems are synonyms and the term data synthesis remains the same.</p><p>Another example this time of a neutral pair of sentences is the following: the hypothesis is “<em>She was so happy she couldn&#39;t stop smiling.</em>” and the premise is “<em>She smiled back.</em>”. The first sentence doesn’t imply the second one, however, it doesn’t contradict it as well. Thus they are neutral.</p><p>An instance of contradiction, the hypothesis is <em>“The analysis proves that there is no link between PM and bronchitis.”</em> and the premise is “<em>This analysis pooled estimates from these two studies to develop a C-R function linking PM to chronic bronchitis.</em>”. In the hypothesis, it is stated that the analysis shows that there is no link between two biological terms. Meanwhile, the premise states the opposite, that the analysis combined two studies to show that there is a connection between the two terms.</p><p>For more examples please explore the HuggingFace Datasets page powered by Streamlit: <a href="https://huggingface.co/datasets/viewer/">https://huggingface.co/datasets/viewer/</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yAfkZJ1RS2ulEYmJFIOlMA.png" /></figure><h3>The Models</h3><p>In our experiments, we will utilize the following set of pre-trained multilingual language models:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/cda70e39830927f93c14993e985b27b7/href">https://medium.com/media/cda70e39830927f93c14993e985b27b7/href</a></iframe><p>We will load each model with its last state weights and continue training the entire network (fine-tuning) or the classification head only (feature extraction) from that state. All of the mentioned models are trained with the Masked Language Modeling (MLM) objective.</p><h3>Setting up Training Environment</h3><p>Before beginning, it is important to keep in mind that the following is what the ultimate structure of our directory will resemble:</p><pre>aim-and-mlflow-usecase<br>├── logs<br>│   ├── aim_callback<br>│   │   └── .aim<br>│   ├── aimlflow<br>│   │   └── .aim<br>│   ├── checkpoints<br>│   └── mlruns<br>└── main.py</pre><p>Let’s start off by creating the main directory, we named it aim-and-mlflow-usecase, you can simply name anything you want. After which we need to download the main.py from the following source: <a href="https://github.com/aimhubio/aimlflow/tree/main/examples/cross-lingual-transfer">https://github.com/aimhubio/aimlflow/tree/main/examples/cross-lingual-transfer</a>. The code explanation and sample usage can be found in the README.md file of the directory. We will be using this script to run our experiments.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4l7ZT-XYl8fKjm4zDRvEUg.png" /></figure><p>The logs directory as the name suggests stores the logs. In the checkpoints folder, all the model states will be saved. The mlruns is the repository for MLflow experiments. The aim_callback will store the repository of Aim runs tracked using Aim’s built-in callback for Hugging Face Transformers, meanwhile, the aimlflow will store the runs converted from MLflow using the aimlflow tool.</p><blockquote><em>It is important to keep in mind that due to limited computational resources, we have chosen to use only 15,000 samples of the training dataset and will be training for a mere 3 epochs with a batch size of 8. Consequently, the obtained results may not be optimal. Nevertheless, the aim of this use case is not to achieve the best possible results, but rather to showcase the advantages of using both Aim and MLflow.</em></blockquote><p>In order to start the training process, we will be using the following command. But first, let’s navigate to the directory where our script is located (aim-and-mlflow-usecase in our case).</p><pre>python main.py feature-extraction \<br>    --model-names bert-base-multilingual-cased bert-base-multilingual-uncased xlm-roberta-base distilbert-base-multilingual-cased \<br>    --eval-datasets-names en de fr es ar zh \<br>    --output-dir {PATH_TO}/logs</pre><p>Where {PATH_TO} is the absolute path of the aim-and-mlflow-usecase directory. In this particular command, we use the feature-extraction technique for 4 pre-trained models and validate on 6 languages of the XNLI dataset. In parallel or after the first process completion we can run the same command this time using the fine-tuning technique:</p><pre>python main.py fine-tune \<br>    --model-names bert-base-multilingual-cased bert-base-multilingual-uncased xlm-roberta-base distilbert-base-multilingual-cased \<br>    --eval-datasets-names en de fr es ar zh \<br>    --output-dir {PATH_TO}/logs</pre><p>Go grab some snacks, trainings take a while 🍫 ☺️.</p><h3>Using aimlflow</h3><p>Meanwhile, one might wonder why we are tracking the experiment results using MLflow and Aim. We could simply track the metrics via MLflow and use the aimlflow to simply convert and view our experiments live on Aim. Let’s first show how this can be done after which tackle the question.</p><p>Instal aimlflow on your machine via pip, if it is not already installed:</p><pre>$ pip install aimlflow</pre><pre>$ aimlflow sync --mlflow-tracking-uri=logs/mlruns --aim-repo=logs/aimlflow/.aim</pre><p>This command will start converting all of the experiment hyperparameters, metrics, and artifacts from MLflow to Aim, and continuously update the database with new runs every 10 seconds.</p><p>More on how the aimlflow can be set up for local and remote MLflow experiments can be found in these two blog posts respectively:</p><ul><li><a href="https://medium.com/aimstack/exploring-mlflow-experiments-with-a-powerful-ui-238fa2acf89e"><strong>Exploring MLflow experiments with a powerful UI</strong></a></li><li><a href="https://medium.com/aimstack/how-to-integrate-aimlflow-with-your-remote-mlflow-3e9ace826eaf"><strong>How to integrate aimlflow with your remote MLflow</strong></a></li></ul><p>This is one approach to follow, but for a more improved user interface experience, we suggest utilizing Aim’s built-in callback, aim.hugging_face.AimCallback, which is specifically designed for transformers.Trainer functionality. It tracks a vast array of information, including environment details, packages and their versions, CPU, and GPU usage, and much more.</p><h3>Unlocking the Power of Data Analysis</h3><p>Once the training completes some steps, we can start exploring the experiments and comparing the MLflow and Aim user interfaces. First, let’s launch both tools’ UIs. To do this, we need to navigate to the logs directory and run the MLflow UI using the following command:</p><pre>$ mlflow ui</pre><pre>$ aim up</pre><blockquote><em>Note that for the best possible experience, we will be using the </em><em>aim_callback/.aim repository in this demonstration, as it has deeper integration with the </em><em>Trainer.</em></blockquote><p>The UIs of both MLflow and Aim will be available by default on ports 5000 and 43800 respectively. You can access the homepages of each tool by visiting http://127.0.0.1:5000 for MLflow and http://127.0.0.1:43800 for Aim.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*d3ThRGvGGEvPFvLQ43VW1w.png" /><figcaption>The user interface of MLflow on first look</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lXR2nt6w0WMo50aQ4TFJDA.png" /><figcaption>The user interface of Aim on first look</figcaption></figure><p>In order to gain valuable insights from the experiment results, it is imperative to navigate to the proper pages in both user interfaces. To do so, in MLflow, we can visit the Compare Runs page:</p><p>By selecting all the experiments, navigate to the comparison page by clicking the Compare button.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Fk7qu58g2Qwyx-OFtu0mHg.png" /></figure><p>The Run details section presents the run metadata, including the start and end time and duration of the run. The Parameters section displays the hyperparameters used for the run, such as the optimizer and architecture. The Metrics section showcases the latest values for each metric.</p><p>Having access to all this information is great, but what if we want to explore the evolution of the metrics over time to gain insights into our training and evaluation processes? Unfortunately, MLflow does not offer this functionality. However, Aim does provide it, to our advantage.</p><p>To organize the parameters into meaningful groups for our experiment, simply go to Aim’s Metrics Explorer page and follow a few straightforward steps:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qwyGgzlWQHR7nIW-rTD8Iw.gif" /></figure><h3>Gaining insights</h3><p>Let’s examine the charts more closely and uncover valuable insights from our experiments.</p><p>A quick examination of the charts reveals the following observations:</p><ul><li>The fine-tuning technique is clearly superior to feature extraction in terms of accuracy and loss, as evidenced by a comparison of the maximum and minimum results in charts 1 and 3, and charts 2 and 4, respectively.</li><li>The graphs for feature extraction show significant fluctuations across languages, whereas the results for fine-tuning vary greatly with changes to the model. To determine the extent of the variation, we can consolidate the metrics by removing either the grouping by language (color) or model (stroke), respectively. In this case, we will maintain the grouping by model name to examine the variation of each model for a given technique.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dKJ2k0_oy8218EBIfhxn6Q.png" /></figure><ul><li>Even though we have only trained a single model with a larger batch size (16, instead of the default 8), it is still valuable to examine the trend. To accomplish this, we will eliminate the grouping by model name and group only by train_batch_size. As we can observe, after only 2500 steps, there is a trend of decreasing loss and increasing accuracy at a quicker pace. Thus, it is worth considering training with larger batch sizes.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Q7FN0NfWgWALylCCTwy3EQ.png" /></figure><ul><li>The charts unmistakably show that the bert-base-multilingual-cased model achieved the best accuracy results, with the highest score observed for the en subset, as the model was trained on that subset. Subsequently, es, fr, de, zh, and ar followed. Unsurprisingly the scores for the zh and ar datasets were lower, given that they belong to distinct linguistic families and possess unique syntax.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NJoo9JlhjXfknqIVoFLGkw.png" /></figure><ul><li>Let us examine the training times and efficiencies. By setting the x-axis to align with relative time rather than default steps, we observe that the final tracking point of the fine-tuning technique took almost 25% more time to complete compared to the feature-extraction technique.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iNlhMHrCtUtc72s4FCQLaQ.png" /></figure><ul><li>One can continue analysis further after training with bigger batch sizes and more variations of the learning rate, models, etc. The Parameter Explorer will then lend its aid in presenting intricate, multi-layered data in a visually appealing, multi-dimensional format. To demonstrate how the Parameter Explorer works, let’s pick the following parameters: train_batch_size, learning_rate,_name_or_path, loss, and the accuracies of sub_datasets. The following chart will be observed after clicking the Search button. From here we can see that the run which resulted in the highest accuracies for all subsets has a final loss value equal to 0.6, uses the bert-base-multilingual-cased model, with 5·10⁻⁵ learning_rate and the batch_size is 8.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8J6bja914aud2IIO1Dlb5A.png" /></figure><p>Taking into account the aforementioned insights, we can move forward with future experiments. It is worth noting that while fine-tuning results improved accuracy scores, it requires a slightly longer training time. Increasing the batch size and training for longer steps/epochs is expected to further enhance the results. Furthermore, fine-tuning other hyperparameters such as the learning rate, weight decay, and dropout will make the experiments set more diverse and may lead to even better outcomes.</p><h3>Conclusion</h3><p>This blog post demonstrates how to solve an NLP task, namely zero-shot cross-lingual transfer while tracking your run metrics and hyperparameters with MLflow and then utilizing Aim’s powerful user interface to obtain valuable insights from the experiments.</p><p>We also showcased how to use the aimlfow which has piqued user interest as a tool that seamlessly integrates the experiment tracking user interface of Aim with MLflow logs.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4bad0a199fc7" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/aim-and-mlflow-choosing-experiment-tracker-for-zero-shot-cross-lingual-transfer-4bad0a199fc7">Aim and MLflow — Choosing Experiment Tracker for Zero-Shot Cross-Lingual Transfer</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to integrate aimlflow with your remote MLflow]]></title>
            <link>https://medium.com/aimstack/how-to-integrate-aimlflow-with-your-remote-mlflow-3e9ace826eaf?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/3e9ace826eaf</guid>
            <category><![CDATA[experiment-tracking]]></category>
            <category><![CDATA[integration]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[ui]]></category>
            <category><![CDATA[mlflow]]></category>
            <dc:creator><![CDATA[Hovhannes Tamoyan]]></dc:creator>
            <pubDate>Mon, 30 Jan 2023 18:22:26 GMT</pubDate>
            <atom:updated>2023-01-30T18:23:22.232Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rSCbDO5InRlBXTxzD3NVwQ.png" /></figure><p>We are thrilled to unveil aimlflow, a tool that allows for a smooth integration of a robust experiment tracking UI with MLflow logs! 🚀</p><p>With aimlflow, MLflow users can now seamlessly view and explore their MLflow experiments using Aim’s powerful features, leading to deeper understanding and more effective decision-making.</p><p>We have created a dedicated post on the setup of aimlflow on local environment. For further information and guidance, please refer to the following link:</p><p>Running Aim on the local environment is pretty similar to running it on the remote. See the guide on running multiple trainings using Airflow and exploring results through the UI here: <a href="https://medium.com/aimstack/exploring-mlflow-experiments-with-a-powerful-ui-238fa2acf89e">https://medium.com/aimstack/exploring-mlflow-experiments-with-a-powerful-ui-238fa2acf89e</a></p><p>In this tutorial, we will showcase the steps required to successfully use aimlflow to track experiments on a remote server.</p><h3>Project overview</h3><p>We will use PyTorch and Ray Tune to train a simple convolutional neural network (CNN) on the Cifar10 dataset. We will be experimenting with different sizes for the last layers of the network and varying the learning rate to observe the impact on network performance.</p><p>We will use PyTorch to construct and train the network, leverage Ray Tune to fine-tune the hyperparameters, and utilize MLflow to meticulously log the training metrics throughout the process.</p><p>Find the full project code on GitHub: <a href="https://github.com/aimhubio/aimlflow/tree/main/examples/hparam-tuning">https://github.com/aimhubio/aimlflow/tree/main/examples/hparam-tuning</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1XY23jEW68KnwcC3tBKvOw.png" /></figure><h3>Server-side/Remote Configuration</h3><p>Let’s create a separate directory for the demo and name it mlflow-demo-remote. After which download and run the tune.py python script from the Github repo to conduct the training sessions:</p><pre>$ python tune.py</pre><p>Ray Tune will start multiple trials of trainings with different combinations of the hyperparameters, and yield a similar output on the terminal:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e0lMlACoiaj1U8A3QB1C7Q.png" /></figure><p>Once started, mlflow will commence recording the results in the mlruns directory. Our remote directory will have the following structure:</p><pre>mlflow-demo-remote<br>├── tune.py<br>└── mlruns<br>    ├── ...</pre><p>Let’s open up the mlfow UI to explore the runs. To launch the mlflow user interface, we simply need to execute the following command from the mlflow-demo-remote directory:</p><pre>$ mlflow ui --host 0.0.0.0</pre><p>By default, the --host is set to 127.0.0.1, limiting access to the service to the local machine only. To expose it to external machines, set the host to 0.0.0.0.</p><p>By default, the system listens on port 5000.</p><p>One can set --backend-store-uri param to specify the URI from which the source will be red, wether its an SQLAlchemy-compatible database connection or a local filesystem URI, by default its the path of mlruns directory.</p><p>Upon navigating to http://127.0.0.1:5000, you will be presented with a page that looks similar to this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*J8NMyKkAIhdMdFwyIghuVA.png" /></figure><h3>Synchronising MLflow Runs with Aim</h3><p>After successfully initiating our training on the remote server and hosting the user interface, we can begin converting mlflow runs from the remote to our local Aim repository.</p><p>First, let’s move forward with the installation process of aimlflow. It’s incredibly easy to set up on your device, just execute the following command:</p><pre>$ pip install aim-mlflow</pre><p>After successfully installing aimlflow on your machine let’s create a directory named mlflow-demo-local where the .aimrepository will be initialized and navigate to it. Then, initialize an empty aim repository by executing the following simple command:</p><pre>$ aim init</pre><p>This will establish an Aim repository in the present directory and it will be named .aim.</p><p>This is how our local system directory will look like:</p><pre>mlflow-demo-local<br>└── .aim<br>    ├── ...</pre><p>In order to navigate and explore MLflow runs using Aim, the aimlflow synchroniser must be run. This will convert and store all metrics, tags, configurations, artifacts, and experiment descriptions from the remote into the .aim repository.</p><p>To begin the process of converting MLflow experiments from the the hosted url YOUR_REMOTE_IP:5000 into the Aim repository .aim, execute the following command from our local mlflow-demo-local directory:</p><pre>$ aimlflow sync --mlflow-tracking-uri=&#39;http://YOUR_REMOTE_IP:5000&#39; --aim-repo=.aim</pre><p>The converter will go through all experiments within the project and create a unique Aim run for each experiment with corresponding hyperparameters, tracked metrics and the logged artifacts. This command will periodically check for updates from the remote server every 10 seconds, and keep the data syncronized between the remote and the local databases.</p><p>This means that you can run your training script on your remote server without any changes, and at the same time, you can view the real-time logs on the visually appealing UI of Aim on your local machine. How great is that? ☺️</p><p>Now that we have initialized the Aim repository and have logged some parameters, we simply need to run the following command:</p><pre>$ aim up</pre><p>to open the user interface and explore our metrics and other information.</p><p>For further reading please referee to <a href="https://aimstack.readthedocs.io/en/latest/">Aim documentation</a> where you will learn more about the superpowers of Aim.</p><h3>Conclusion</h3><p>To sum up, Aim brings a revolutionary level of open-source experiment tracking to the table and aimlflow makes it easily accessible for MLflow users with minimal effort. The added capabilities of Aim allow for a deeper exploration of remote runs, making it a valuable addition to any MLflow setup.</p><p>In this guide, we demonstrated how the MLflow remote runs can be explored and analyzed using the Aim. While both tools share some basic functionalities, the Aim UI provides a more in-depth exploration of the runs.</p><p>The added value of Aim makes installing aimlflow and enabling the additional capability well worth it.</p><h3>Learn more</h3><p>If you have any questions join <a href="https://community.aimstack.io/">Aim community</a>, share your feedback, open issues for new features and bugs. 🙌</p><p>Show some love by dropping a ⭐️ on <a href="https://github.com/aimhubio/aim">GitHub</a>, if you think Aim is useful.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3e9ace826eaf" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/how-to-integrate-aimlflow-with-your-remote-mlflow-3e9ace826eaf">How to integrate aimlflow with your remote MLflow</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Aim 2022; Product Recap]]></title>
            <link>https://medium.com/aimstack/aim-2022-product-recap-8025bd878e25?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/8025bd878e25</guid>
            <category><![CDATA[tensorflow]]></category>
            <category><![CDATA[mlops]]></category>
            <category><![CDATA[pytorch]]></category>
            <dc:creator><![CDATA[Gor Arakelyan]]></dc:creator>
            <pubDate>Fri, 20 Jan 2023 16:46:04 GMT</pubDate>
            <atom:updated>2023-01-20T17:47:28.079Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mpgFSGReVaycf5644hM6xw.png" /></figure><h3>A retrospective look at the past year</h3><p>Aim underwent significant improvements in the past year. Over the course of 50 releases, including 12 minor releases and 38 patch releases, Aim received contributions from 35 total contributors, including 18 new external contributors. These contributions included 769 merged pull requests and 487 submitted issues!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/987/1*xhiLjCXeyDNrMIuZU5_SXg.png" /><figcaption>Aim contributions pulse</figcaption></figure><p>There was a significant progress in various areas of the Aim, including adding more supported platforms, taking the UI to the whole new level, adding remote tracking capabilities, revamping the CLI, extending the QL and moving towards active monitoring for optimizing large-scale trainings.</p><p>In addition to adding new features and extending Aim, improvements in performance and usability were applied to enhance the overall user experience. Furthermore, new integrations with machine learning tools were implemented to make it easier to use Aim in a broader technology stack</p><p>Overall, these improvements greatly enhanced the functionality and usability of Aim for tracking machine learning experiments for both small and large scale projects.</p><h3>Aim Community</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/826/1*GitHotOjlY9WPsvQmWaqwQ.png" /><figcaption>Aim contributors</figcaption></figure><blockquote>We are on a mission to democratize AI dev tools!</blockquote><p>Numerous external contributions were pushed to “main” in 2022. Without community support, Aim would not be where it is today.</p><p>Congratulations to <a href="https://github.com/Sharathmk99">Sharathmk99</a>, <a href="https://github.com/YodaEmbedding">YodaEmbedding</a>, <a href="https://github.com/hjoonjang">hjoonjang</a>, <a href="https://github.com/jangop">jangop</a>, <a href="https://github.com/djwessel">djwessel</a>, <a href="https://github.com/GeeeekExplorer">GeeeekExplorer</a>, <a href="https://github.com/dsblank">dsblank</a>, <a href="https://github.com/timokau">timokau</a>, <a href="https://github.com/kumarshreshtha">kumarshreshtha</a>, <a href="https://github.com/kage08">kage08</a>, <a href="https://github.com/karan2801">karan2801</a>, <a href="https://github.com/hendriks73">hendriks73</a>, <a href="https://github.com/yeghiakoronian">yeghiakoronian</a>, <a href="https://github.com/uduse">uduse</a>, <a href="https://github.com/arnauddhaene">arnauddhaene</a>, <a href="https://github.com/lukoucky">lukoucky</a>, <a href="https://github.com/Arvind644">Arvind644</a>, <a href="https://github.com/shrinandj">shrinandj</a> for their first contributions over the past year! 🎉</p><p>These contributions have covered a range of areas, including documentation, user guides, the SDK and the UI!</p><h3>Highlights</h3><ul><li>Supported platforms were expanded to include Docker, Apple M1, Conda, Google Colab and Jupyter Notebooks.</li><li>The UI was given a makeover, with upgraded home and run single pages, as well as brand new experiment page. The new audio and figure explorers now allow for the exploration of more types of metadata.</li><li>Aim remote tracking server was rolled out to enable tracking from multi-host environments.</li><li>Active monitoring capabilities were enabled, such as notifications for stalled runs, and the ability to programmatically define training heuristics using callbacks and notifications.</li><li>Aim was integrated with 9 different machine learning frameworks alongside with 3 convertors that help to migrate from other experiment trackers.</li><li>Last but not least, the documentation was completely revamped, including almost 40 pages of guides towards helping in effectively using and understanding Aim.</li></ul><h3>Supported Platforms</h3><p>Improvements were made to ensure Aim works seamlessly with widely used environments and platforms in ML/MLOps field, including adding support for new platforms.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aYG-SSawh8Q8jte6BjyNMQ.png" /></figure><ul><li>Support for running Aim on Apple M1 devices.</li><li>Support for using Aim inside Google Colab and Jupyter notebooks.</li><li>Docker images for Aim UI and server.</li><li>Support for running Aim in Kubernetes clusters.</li><li>Aim became available in Conda.</li></ul><h3>User Interface</h3><p>The UI is one of key interfaces to interact with the ML training runs tracked by Aim. It’s super-powerful for comparing large number of trainings. The UI was significantly improved in the past year with new pages and explorers to help to explore more metadata types.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*odqgX33xLVzYBI6sfRYRWQ.png" /><figcaption>Home page</figcaption></figure><ul><li>Revamped home page to see project’s contributions and overall statistics.</li><li>Revamped run page to deep-dive into an individual run.</li><li>Brand new experiment page to view experiment’s details, attached runs, etc.</li><li>New explorers, such as the “Figures Explorer” and “Audio Explorer”, to allow a cross-run comparison of Plotly figures and audio objects respectively.</li><li>“Metrics Explorer” key enhancements, including displaying chart legends and the ability of exporting charts as images.</li></ul><h3>Command Line Interface</h3><p>Aim CLI offers a simple interface to easily manage tracked trainings. Two key groups of commands were added:</p><ul><li><strong>Runs management</strong> to enable the base operations for managing trainings — list, copy, remove, move, upload, close.</li><li><strong>Storage management</strong> to help to manage Aim data storage, such as reindexing, pruning, managing data format versions (advanced usage).</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1016/1*MZFkXFzmz5BxGYofUgWdTg.png" /></figure><h3>Query Language</h3><p>Aim enables a powerful query language to filter through all the stored metadata using python expressions. A few additions were done providing a more friendly and pythonic interface for working with date-time expressions, as well as querying runs based on its metrics results.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/642/1*6J9gouDEt9Mkhv9Cds4dNw.png" /></figure><h3>Remote Tracking</h3><p>The Aim remote tracking server, which allows running trainings in a multi-host environment and collect tracked data in a centralized location, used to be one of the most requested features.</p><p>It has been gradually rolled out from its experimental phase to a stable version that can scale up and handle an increasing number of parallel trainings.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CizfTBF8Nh4DZcun6TP8Pg.png" /></figure><p>Switching from a local environment to a centralized server is as easy as pie, as zero code changes are required.⚡ <br>This is because the interfaces are completely compatible!</p><h3>Active Monitoring</h3><p>Aim made it first steps towards optimizing conducting long and large scale trainings, such as training or tuning GPT-like models. It reduces human-hours spent monitoring/restarting runs, improves reproducibility and ramps up time for people who need to train these models:</p><ul><li>Ability to notify on stalled/stuck runs.</li><li>Callbacks and notifications to define training heuristics programmatically.</li></ul><p>A quote from “Scaling Laws for Generative Mixed-Modal Language Models” (Aghajanyan et al., 2023, <a href="https://arxiv.org/abs/2301.03728">arXiv:2301.03728</a>):</p><blockquote>We tracked all experiments using the Aim experiment tracker (Arakelyan et al., 2020). To ensure consistent training strategies across our experiments, we implemented a model restart policy using the Aim experiment tracker and callbacks. Specifically, if training perplexities do not decrease after 500 million tokens, the training run is restarted with a reduced learning rate with a factor of 0.8 of the current time step. This policy helps remove variance in the scaling laws due to differences in training procedures and allows us to scale up the number of asynchronous experiments significantly. All experiments were conducted in a two-month time frame with a cluster of 768 80GB A100 GPUs. The majority of experiments used 64 GPUs at a time.</blockquote><h3>Key Performance and Usability Optimizations</h3><ul><li>Storage: long metrics sampling and retrieval (&gt;1M steps).</li><li>Storage: robust locking mechanism and automatic background indexing.</li><li>UI: The v3.12 milestone was released, addressing over 30 usability issues.</li><li>UI: virtualizations in various places across the UI to improve responsiveness when displaying large amount of data.</li><li>UI: optimizations in stream decoding and data encoding to enhance overall performance.</li><li>UI: live update optimizations to effectively update and display real-time data.</li></ul><h3>Integrations</h3><p>Aim easily integrates with a large number of widely adopted machine learning frameworks and tools, reducing barriers to get started with Aim. During the past year, a number of integrations were added:</p><ul><li><strong>ML Frameworks</strong> — Pytorch Ignite, CatBoost, LightGBM, KerasTuner, fastai, MXNet, Optuna, PaddlePaddle</li><li><strong>Convertors </strong>to easily migrate from other tools <strong>— </strong>TensorBoard to Aim, MLFlow to Aim, WandB to Aim.</li><li><strong>Tools that integrated Aim</strong> — Meta’s fairseq and metaseq frameworks, HuggingFace’s accelerate, Ludwig and Kedro.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/679/1*YT4Yf1sJUqQLWRtiF8fJgQ.png" /></figure><h3>Learn More</h3><p>If you have any questions join <a href="https://community.aimstack.io/">Aim community</a>, share your feedback, open issues for new features and bugs. 🙌</p><p>Show some love by dropping a ⭐️ on <a href="https://github.com/aimhubio/aim">GitHub</a>, if you find Aim useful.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8025bd878e25" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/aim-2022-product-recap-8025bd878e25">Aim 2022; Product Recap</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Exploring MLflow experiments with a powerful UI]]></title>
            <link>https://medium.com/aimstack/exploring-mlflow-experiments-with-a-powerful-ui-238fa2acf89e?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/238fa2acf89e</guid>
            <category><![CDATA[mlops]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[tensorflow]]></category>
            <category><![CDATA[pytorch]]></category>
            <category><![CDATA[mlflow]]></category>
            <dc:creator><![CDATA[Gor Arakelyan]]></dc:creator>
            <pubDate>Wed, 18 Jan 2023 18:55:15 GMT</pubDate>
            <atom:updated>2023-01-18T18:55:15.630Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YMlI66d-QPxI3fcQCoPSlw.png" /></figure><p>We are excited to announce the release of <a href="https://github.com/aimhubio/aimlflow">aimlflow</a>, an integration that helps to seamlessly run a powerful experiment tracking UI on MLflow logs! 🎉</p><p><a href="https://github.com/mlflow/mlflow">MLflow</a> is an open source platform for managing the ML lifecycle, including experimentation, reproducibility, deployment, and a central model registry. While MLflow provides a great foundation for managing machine learning projects, it can be challenging to effectively explore and understand the results of tracked experiments. <a href="https://github.com/aimhubio/aim">Aim</a> is a tool that addresses this challenge by providing a variety of features for deeply exploring and learning tracked experiments insights and understanding results via UI.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WNn0RhcPt_UCDhwRUnNj4A.gif" /></figure><p><strong>With aimlflow, MLflow users can now seamlessly view and explore their MLflow experiments using Aim’s powerful features, leading to deeper understanding and more effective decision-making.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xXGWEV5bJFEOwpjtDZOoHw.png" /></figure><p>In this article, we will guide you through the process of running a several CNN trainings, setting up aimlfow and exploring the results via UI. Let’s dive in and see how to make it happen.</p><blockquote>Aim is an easy-to-use open-source experiment tracking tool supercharged with abilities to compare 1000s of runs in a few clicks. Aim enables a beautiful UI to compare and explore them.</blockquote><blockquote>View more on GitHub: <a href="https://github.com/aimhubio/aim">https://github.com/aimhubio/aim</a></blockquote><h3>Project overview</h3><p>We use a simple project that trains a CNN using <a href="https://github.com/pytorch/pytorch">PyTorch</a> and <a href="https://github.com/ray-project/ray/tree/master/python/ray/tune">Ray Tune</a> on the <a href="https://www.cs.toronto.edu/~kriz/cifar.html">CIFAR-10</a> dataset. We will train multiple CNNs by adjusting the learning rate and the number of neurons in two of the network layers using the following stack:</p><ul><li><strong>PyTorch </strong>for building and training the model</li><li><strong>Ray Tune</strong> for hyper-parameters tuning</li><li><strong>MLflow </strong>for experiment tracking</li></ul><p>Find the full project code on GitHub: <a href="https://github.com/aimhubio/aimlflow/tree/main/examples/hparam-tuning">https://github.com/aimhubio/aimlflow/tree/main/examples/hparam-tuning</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*47TN9ur7psCbJZHslWNvFA.png" /></figure><p>Run the trainings by downloading and executing tune.py python file:</p><pre>python tune.py</pre><p>You should see a similar output, meaning the trainings are successfully initiated:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p8K-B7Cu-IT9D0dRUBnqfA.png" /></figure><h3>Getting started with aimlflow</h3><p>After the hyper-parameter tuning is ran, let’s see how aimlflow can help us to explore the tracked experiments via UI.</p><p>To be able to explore MLflow logs with Aim, we will need to convert MLflow experiments to Aim format. All the metrics, tags, config, artifacts, and experiment descriptions will be stored and live-synced in a .aim repo located on the file system.</p><p><strong>This means that you can run your training script, and without modifying a single line of code, live-time view the logs on the beautiful UI of Aim. Isn’t it amazing? 🤩</strong></p><h4>1. Install aimlflow on your machine</h4><p>It is super easy to install aimlflow, simply run the following command:</p><pre>pip3 install aim-mlflow</pre><h4>2. Sync MLflow logs with Aim</h4><p>Pick any directory on your file system and initialize a .aim repo:</p><pre>aim init</pre><p>Run the aimlflow sync command to sync MLflow experiments with the Aim repo:</p><pre>aimlflow sync --mlflow-tracking-uri=MLFLOW_URI --aim-repo=AIM_REPO_PATH</pre><h4>3. Run Aim</h4><p>Now that we have synced MLflow logs and we have some trainings logged, all we need to do is to run Aim:</p><pre>aim up --repo=AIM_REPO_PATH</pre><p>You will see the following message on the terminal output:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*H8dvLDWAF-EE-MgO2MjSWg.png" /></figure><p>Congratulations! Now you can explore the training logs with Aim. 🎉</p><h3>Quick tour of Aim for MLflow users</h3><p>In this section, we will take a quick tour of Aim’s features, including:</p><ul><li>Exploring hyper-parameters tuning results</li><li>Comparing tracked metrics</li><li>As well as, taking a look at the other capabilities Aim provides</li></ul><h4>Exploring MLflow experiments</h4><p>Now then Aim is set up and running, we navigate to the project overview page at 127.0.0.1:43800, where the summary of the project is displayed:</p><ul><li>The number of tracked training runs and experiments</li><li>Statistics on the amount of tracked metadata</li><li>A list of experiments and tags, with the ability to quickly explore selected items</li><li>A calendar and feed of contributions</li><li>A table of in-progress trainings</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TjHqr4lK-aFPJPPh5rGAqQ.png" /><figcaption>Project overview</figcaption></figure><p>To view the results of the trainings, let’s navigate to the runs dashboard at 127.0.0.1:43800/runs. Here, you can see hyper-parameters and metrics results all of the trainings.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hryGi06eJll6wy2L3zWzyg.png" /><figcaption>Runs dashboard</figcaption></figure><p>We can deeply explore the results and tracked metadata for a specific run by clicking on its name on the dashboard.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0IfU15byWb7Fx2kPf-d5Jg.png" /><figcaption>Run page</figcaption></figure><p>On this page, we can view the tracked hparams, including the mlflow_run_id and the mlflow_run_name which are extracted from MLflow runs during the conversion process. Additionally, detailed information about the run can be found on each of the tabs, such as tracked hparams, metrics, notes, output logs, system resource usage, etc.</p><h4>Comparing metrics</h4><p>Comparing metrics across several runs is super easy with Aim:</p><ul><li>Open the metrics page from the left sidebar</li><li>Select desired metrics by clicking on + Metrics button</li><li>Pressing Search button on the top right corner</li></ul><p>We will select losses and accuracies to compare them over all the trials. The following view of metrics will appear:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aMzdqTNogK0dONh5nzb_LQ.png" /></figure><p>Aim comes with powerful grouping capabilities. Grouping enables a way to divide metrics into subgroups based on some criteria and apply the corresponding style. Aim supports 3 grouping ways for metrics:</p><ul><li><strong>by color</strong> — each group of metrics will be filled in with its unique color</li><li><strong>by stroke style</strong> — each group will have a unique stroke style (solid, dashed, etc)</li><li><strong>by facet</strong> — each group of metrics will be displayed in a separate subplot</li></ul><p>To learn which set of trials performed the best, let’s apply several groupings:</p><ul><li>Group by run.hparams.l1 hyper-parameter to color the picked metrics based on the number of outputs of the first fully connected layer</li><li>Group by metric.name to divide losses and accuracies into separate subplots (this grouping is applied by default)</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TAOwGrp9b7X3eJgzsLE3tg.png" /></figure><p><strong>Aim also provides a way to select runs programmatically. It enables applying a custom query instead of just picking metrics of all the runs. Aim query supports python syntax, allowing us to access the properties of objects by dot operation, make comparisons, and perform more advanced python operations.</strong></p><p>For example, in order to display only runs that were trained for more than one iteration, we will run the following query:</p><pre>run.metrics[&#39;training_iteration&#39;].last &gt; 1</pre><blockquote>Read more about Aim query language capabilities in the docs: <a href="https://aimstack.readthedocs.io/en/latest/using/search.html">https://aimstack.readthedocs.io/en/latest/using/search.html</a></blockquote><p>This will result in querying and displaying 9 matched runs:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Rcby1yyJPMzTdMgcNvaqlw.png" /></figure><p>Let’s aggregate the groups to see which one performed the best:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gh_Ep2PVX2WsQQbPL2NyhA.png" /></figure><p>From the visualizations, it is obvious that the purple group achieved better performance compared to the rest. This means that the trials that had 64 outputs in the first fully connected layer achieved the best performance. 🎉</p><blockquote>For more please see Aim official docs here: <a href="https://aimstack.readthedocs.io/en/latest/">https://aimstack.readthedocs.io/en/latest/</a></blockquote><h4>Last, but not least: a closer look at Aim’s key features</h4><ul><li>Use powerful pythonic search to select the runs you want to analyze:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UnfUbRh5yLa5PceBi2a0HQ.png" /></figure><ul><li>Group metrics by hyperparameters to analyze hyperparameters’ influence on run performance:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1M8Z_CS6j9_nBQXifp-JBw.png" /></figure><ul><li>Select multiple metrics and analyze them side by side:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*j6K9X_-LL4aHb9ZhCDxahQ.png" /></figure><ul><li>Aggregate metrics by std.dev, std.err, conf.interval:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8hXsPXkgqiDm-GqM1PqJ_w.png" /></figure><ul><li>Align x axis by any other metric:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ulpsYaFXGiTPSh5oM9XYwQ.png" /></figure><ul><li>Scatter plots to learn correlations and trends:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4uxIpoDd9r7DWa96lR-imw.png" /></figure><ul><li>High dimensional data visualization via parallel coordinate plot:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Z37L2fKGl0mA-x7tOdq9IA.png" /></figure><ul><li>Explore media metadata, such as images and audio objects via Aim Explorers:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2E8ybu8TxejHzjgRT6sReg.png" /><figcaption>Audio Explorer</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*GdFVthJ1ee2AeinV.png" /><figcaption>Images Explorer</figcaption></figure><h3>Conclusion</h3><p>In conclusion, Aim enables a completely new level of open-source experiment tracking and aimlflow makes it available for MLflow users with just a few commands and zero code change!</p><p>In this guide, we demonstrated how MLflow experiments can be explored with Aim. When it comes to exploring experiments, Aim augments MLflow capabilities by enabling rich visualizations and manipulations.</p><p>We covered the basics of Aim, it has much more to offer, with super fast query systems and a nice visualization interface. For more please <a href="https://aimstack.readthedocs.io/en/latest/overview.html">read the docs</a>.</p><h3>Learn more</h3><p>If you have any questions join <a href="https://community.aimstack.io">Aim community</a>, share your feedback, open issues for new features and bugs. 🙌</p><p>Show some love by dropping a ⭐️ on <a href="https://github.com/aimhubio/aim">GitHub</a>, if you think Aim is useful.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=238fa2acf89e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/exploring-mlflow-experiments-with-a-powerful-ui-238fa2acf89e">Exploring MLflow experiments with a powerful UI</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Aim 2022 community report]]></title>
            <link>https://medium.com/aimstack/aim-2022-community-report-a8efd0fb4472?source=rss----d26c2a464e51---4</link>
            <guid isPermaLink="false">https://medium.com/p/a8efd0fb4472</guid>
            <category><![CDATA[mlops]]></category>
            <category><![CDATA[tensorflow]]></category>
            <category><![CDATA[pytorch]]></category>
            <dc:creator><![CDATA[Gev Sogomonian]]></dc:creator>
            <pubDate>Fri, 06 Jan 2023 18:07:40 GMT</pubDate>
            <atom:updated>2023-01-06T18:07:39.921Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OvP3KCeUaBbqWj_jq4c5xg.png" /></figure><p>Hey lovely Aimers, Happy New Year! 🎆</p><p>Now that the 2022 is over, we are excited to share what has happened in 2022. We have achieved a lot together!</p><h3>TLDR — Highlights</h3><p>In 2022 we have taken Aim to completely different level. It has become from a cool open-source project into a full-blown product. An inspiring community-led effort!!</p><ul><li>We have shipped <a href="https://github.com/aimhubio/aim/releaseshttps://github.com/aimhubio/aim/releases">12 new Aim versions</a> and countless other patches</li><li>Almost every week for the past 80+ weeks a new Aim version has been shipped — <strong>a blistering pace of innovation!! 😅</strong></li><li>Aim contributors have doubled to 48 in 2022</li><li>~1300 GitHub issues have been created in 2022 and over 1100 of them have been resolved.</li><li>We have reached 3K stars on GitHub. ⭐️ (If you like our work, <a href="https://github.com/aimhubio/aim">drop us a star!</a> )</li><li>We <a href="https://medium.com/aimstack/aim-community-is-moving-to-discord-da24a52169db">launched</a> our community on <a href="https://community.aimstack.io/">discord</a>.</li></ul><h3>Product</h3><p>We have shipped 100s of major features in 2022. It would take several chapters to talk about all of them.</p><p>However, here are two fundamental features that we haven’t talked much about yet.</p><h4>Base Explorer</h4><ul><li>A foundational work to help compare any type of renderable ML metadata at mass.</li><li>This is the first experimental step we have made to turn Aim into a one-stop-shop for multidimensional metadata analysis.</li></ul><p>The Figures explorer runs on Base Explorer</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xRbl_iVzy8FwRfj6eZWffA.png" /></figure><h4>Aim Callbacks</h4><p>A surgical intervention into your ML runs. For everything!!</p><ul><li>Aim Users are using the callbacks to create policies to automatically manage trainings. A major step towards reproducibility and true training management. Hours of GPU-time saved at the worst case scenario!!</li></ul><p>We are going to talk a lot about the callbacks too! 🙌</p><p>More about callbacks <a href="https://aimstack.readthedocs.io/en/latest/using/callbacks.html#">here</a></p><h4>Aim Roadmap</h4><p>Here is how the public Aim roadmap looks like now. This is just the subset of the additions made. A monumental work!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/827/1*5rYmolGfB_bEjGHFb4TB5Q.png" /></figure><h3>Integrations</h3><p>Aim is heavily integrated with the AI ecosystem now.</p><ul><li>in 2022 Aim ecosystem integrations have grown 3x</li><li>~10 more integrations are also in progress right now ❤️</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/713/1*3EMYy1Eh6qYqrLZo2i6UPw.png" /></figure><ul><li>Lots of impactful repos have adopted Aim as well. Including these ones: <a href="https://github.com/huggingface/accelerate">HF Accelerate</a>, <a href="https://github.com/facebookresearch/metaseqhttps://github.com/facebookresearch/metaseq">FAIR Metaseq</a> (default tracker), <a href="https://github.com/facebookresearch/fairseq">FAIR Fairseq</a>, <a href="https://github.com/ludwig-ai/ludwig">Ludwig</a> etc</li><li>Community-requested Aim converters for Mlflow, TensorBoard and <a href="https://medium.com/aimstack/aim-tutorial-for-weights-and-biases-users-bfbdde76f21e?source=collection_home---4------0-----------------------">Wandb</a>.</li></ul><h3>Onwards to 2023</h3><p>In 2023 we are going to work hard to put Aim into the hands of as many researchers and MLOps engineers as possible!</p><p>Soon we will publish the Aim roadmap of 2023! Lots to share. :)</p><p><strong>2023 here we come! 😊</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a8efd0fb4472" width="1" height="1" alt=""><hr><p><a href="https://medium.com/aimstack/aim-2022-community-report-a8efd0fb4472">Aim 2022 community report</a> was originally published in <a href="https://medium.com/aimstack">AimStack</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>