<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://kim-ai-gpu.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://kim-ai-gpu.github.io/" rel="alternate" type="text/html" /><updated>2026-07-04T12:38:09+00:00</updated><id>https://kim-ai-gpu.github.io/feed.xml</id><title type="html">YoungSeong Kim</title><subtitle>Independent AI researcher. RL lover &amp; DL theory lover.</subtitle><entry><title type="html">Create your own AI, then watch it battle others in your browser</title><link href="https://kim-ai-gpu.github.io/2026/07/04/introducing-agenlus-browser-rl/" rel="alternate" type="text/html" title="Create your own AI, then watch it battle others in your browser" /><published>2026-07-04T11:00:00+00:00</published><updated>2026-07-04T11:00:00+00:00</updated><id>https://kim-ai-gpu.github.io/2026/07/04/introducing-agenlus-browser-rl</id><content type="html" xml:base="https://kim-ai-gpu.github.io/2026/07/04/introducing-agenlus-browser-rl/"><![CDATA[<h2 id="a-quick-primer-what-is-reinforcement-learning-rl">A Quick Primer: What is Reinforcement Learning (RL)?</h2>

<p>If you have mostly worked with Large Language Models (LLMs) or Supervised Learning, RL is a shift in mindset:</p>

<ul>
  <li><strong>Supervised Learning</strong> (like predicting the next token in a text file or classifying an image) relies on a static dataset of static correct answers.</li>
  <li><strong>Reinforcement Learning</strong> relies on <strong>active feedback loops</strong>. An <strong>Agent</strong> (our AI model) interacts with an <strong>Environment</strong> (the game or simulation). It takes an <strong>Action</strong>, receives an <strong>Observation</strong> (the new state of the environment) and a <strong>Reward</strong> (a signal telling the agent how well it is doing), and repeats.</li>
</ul>

<p>The agent’s goal is to learn a <strong>Policy</strong> (a mapping from observations to actions) that maximizes the cumulative reward over time. It starts completely random and improves purely through trial and error.</p>

<p>Because there is no “correct answer” provided upfront, RL agents often find incredibly clever, emergent ways to solve games that developers never anticipated. However, this trial-and-error process is computationally intensive and requires millions of interactions, which is why bringing it directly to the browser is both challenging and exciting.</p>

<hr />

<p>Reinforcement Learning (RL) has always been one of the most fascinating branches of AI. There is something deeply satisfying about watching a blank-slate agent explore an environment and gradually emerge with a superhuman policy.</p>

<p>Yet, compared to the explosive growth of LLM playgrounds and tools, RL remains relatively inaccessible. Setting up a local environment often means wrestling with Python virtual environments, CUDA versions, PyTorch installations, and headless rendering bugs in Gymnasium.</p>

<p>We built <strong><a href="https://agenlus.com">Agenlus</a></strong> to solve this. It is a community platform and model hub for Reinforcement Learning designed to run <strong>entirely in the browser</strong>—no installation, no CUDA configuration, just instant training and evaluation.</p>

<h2 id="democratizing-reinforcement-learning">Democratizing Reinforcement Learning</h2>

<p>For the past decade, state-of-the-art Reinforcement Learning has been the exclusive playground of elite corporate labs and well-funded academic institutions. Whether it is Google DeepMind’s AlphaGo, OpenAI’s Dota 2 bots, or sophisticated industrial robotics control, RL has required access to massive compute clusters, complex simulator setups, and specialized mathematical expertise.</p>

<p>This centralization has stifled the creative potential of independent developers and researchers. While anyone can easily prompt a large language model online, starting out with RL requires wrestling with complex local setups, GPU drivers, and local virtualization, only to wait hours for a simple agent to converge.</p>

<p><strong>We believe RL needs to be democratized.</strong></p>

<p>By leveraging modern web technologies, we want to break down these barriers:</p>
<ul>
  <li><strong>Lowering the Entry Barrier</strong>: You don’t need a high-end local machine or an AWS budget to experiment with RL. If you have a browser, you have a fully functional RL research lab.</li>
  <li><strong>Open-Source Environment Sharing</strong>: Just as Hugging Face democratized NLP by making models easy to share, Agenlus allows developers to upload, share, and benchmark environments instantly.</li>
  <li><strong>Interactive Learning</strong>: Seeing the training process happen live in the browser builds a deep, intuitive understanding of how agent policies adapt to rewards.</li>
</ul>

<p>By putting the tools of RL directly into the hands of the global developer community, we aim to accelerate the discovery of novel control architectures and algorithms that corporate labs might overlook.</p>

<hr />

<h2 id="why-b2c-rl-is-highly-viable-today">Why B2C RL is Highly Viable Today</h2>

<p>We are currently witnessing immense compute inflation dominated by LLMs. This has made building B2C AI startups incredibly expensive, forcing founders to choose between paying massive cloud GPU invoices or raising millions in venture capital.</p>

<p>We believe <strong>Reinforcement Learning (RL) is structurally primed to break this cycle</strong> and lead a new wave of highly profitable B2C AI applications for three key reasons:</p>

<ul>
  <li><strong>Zero Marginal Infrastructure Cost</strong>: Unlike LLMs where every inference token costs API credits, RL training and inference in Agenlus run <strong>100% locally on the user’s client hardware via WebGPU</strong>. Our server costs are virtually zero. This allows us to scale to millions of active users and offer a permanent free tier without burning through compute credits, shifting the monetization focus to marketplace transactions and custom assets.</li>
  <li><strong>Extreme Model Efficiency</strong>: While a decent LLM requires billions of parameters, high-performing RL agents for games (even complex 2D/3D platformers and control tasks) are incredibly lightweight. A small Multi-Layer Perceptron (MLP) or a tiny Convolutional Neural Network (CNN) of under 100K parameters is often enough to achieve superhuman policies. These models load instantly and execute hundreds of steps per second on entry-level mobile devices or laptops.</li>
  <li><strong>Gamification and Natural Viral Loops</strong>: Generative AI tools are mostly focused on productivity. In contrast, training an RL agent is inherently gamified. It feels like nurturing a digital pet (like a Tamagotchi) or coaching a sports team. By transitioning the agent from direct control to autonomic training, users develop a deep emotional attachment to their agent’s playstyle. When you add competitive leaderboards and multi-agent PvP arenas, you create a natural, viral social loop (“My agent can beat yours”) that drives organic growth without expensive customer acquisition costs.</li>
  <li><strong>Crowdsourcing the Future of Offline Data</strong>: RL’s biggest bottleneck in industries like robotics is the lack of diverse, high-quality demonstration datasets. By building a B2C platform where users play to train agents, we are crowdsourcing a massive library of human behavioral trajectories across thousands of environments. This diverse dataset is a goldmine for training future foundational models that generalize across multiple control domains.</li>
</ul>

<hr />

<h3 id="see-it-in-action">See It in Action</h3>

<p>Here is a quick YouTube demonstration of the platform in action:</p>

<p><a href="https://www.youtube.com/watch?v=-ewt-BV23D0" target="_blank" style="position: relative; display: block; width: 100%; border-radius: 8px; overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);"><img src="https://img.youtube.com/vi/-ewt-BV23D0/maxresdefault.jpg" alt="Agenlus Demo Video" style="width: 100%; display: block;" /><span style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 68px; height: 48px; background: #ff0000; border-radius: 14px; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 10px rgba(0,0,0,0.3);"><svg viewBox="0 0 24 24" style="width: 30px; height: 30px; fill: white;"><path d="M8 5v14l11-7z"></path></svg></span></a></p>

<p>And here is a preview of the web UI running a client-side training loop:</p>

<p><img src="/image.png" alt="Agenlus Web UI" style="width: 100%;" /></p>

<p>Here is how we built the architecture to make in-browser RL viable, the UX challenges we encountered, and why we believe RL is prime for a B2C comeback.</p>

<hr />

<h2 id="the-architecture-webgpu--pyodide--web-worker">The Architecture: WebGPU + Pyodide + Web Worker</h2>

<p>To achieve a zero-install experience, we had to move both the environment simulation and the model training into the client browser.</p>

<p>Our core architecture splits the load into three parts:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Browser Context
├── Web Worker (Pyodide)
│   ├── gymnasium (micropip)
│   ├── env.step(action) -&gt; observation, reward, terminated
│   └── Sends state updates to the main thread
│
├── Main Thread (WebGPU &amp; JS)
│   ├── Model inference &amp; policy updates
│   ├── Action selection (via WebGPU-accelerated tensors)
│   └── Drawing Commands Bridge (rendering to Canvas)
</code></pre></div></div>

<h3 id="1-pyodide-in-a-web-worker">1. Pyodide in a Web Worker</h3>
<p>We use <a href="https://pyodide.org/">Pyodide</a> (Python compiled to WebAssembly) to run official <code class="language-plaintext highlighter-rouge">gymnasium</code> environments like <code class="language-plaintext highlighter-rouge">CartPole</code> and <code class="language-plaintext highlighter-rouge">MountainCar</code>. 
Running Python environments in the browser can easily freeze the UI because Python execution is single-threaded. By offloading Pyodide to a dedicated <strong>Web Worker</strong>, we keep the main UI thread running at a smooth 60fps.</p>

<h3 id="2-main-thread-for-webgpu-inference--drawing-commands-bridge">2. Main Thread for WebGPU Inference &amp; Drawing Commands Bridge</h3>
<p>We utilize <strong>WebGPU</strong> on the main thread for neural network updates and forward passes. 
Because the observation state returned by Pyodide is simple (e.g., 4 float values for <code class="language-plaintext highlighter-rouge">CartPole</code>), passing data between the Web Worker and the WebGPU context has negligible serialization overhead.</p>

<p>For environment visualization, standard Gymnasium environments rely heavily on Pygame, which cannot render directly to a browser Canvas and introduces massive performance overhead if we pass raw pixel frame buffers (<code class="language-plaintext highlighter-rouge">rgb_array</code>) back and forth from WASM.</p>

<p>To bypass this, we built a <strong>Pygame Mocking Bridge</strong> in Pyodide:</p>
<ol>
  <li>We intercept all <code class="language-plaintext highlighter-rouge">pygame.draw</code> calls (like <code class="language-plaintext highlighter-rouge">rect</code>, <code class="language-plaintext highlighter-rouge">circle</code>, <code class="language-plaintext highlighter-rouge">line</code>) in the Python environment by injecting a mock <code class="language-plaintext highlighter-rouge">pygame</code> module dynamically.</li>
  <li>The mock module translates Python drawing operations into a list of lightweight JSON drawing commands (e.g., <code class="language-plaintext highlighter-rouge">{"type": "circle", "color": [255, 0, 0], "center": [100, 50], "radius": 10}</code>).</li>
  <li>These instructions are sent from the Web Worker to the main thread, where <strong>native HTML5 Canvas</strong> draws them.</li>
</ol>

<p>This compromise preserves complete compatibility with standard Gymnasium environment rendering codes (<code class="language-plaintext highlighter-rouge">import pygame</code> inside the environment still works) while keeping the graphics pipeline lightning fast and hardware-accelerated.</p>

<hr />

<h2 id="overcoming-browser-constraints">Overcoming Browser Constraints</h2>

<p>Building a fully client-side ML training loop comes with unique friction points. Here is how we addressed them:</p>

<h3 id="1-the-15-second-pyodide-cold-start">1. The 15-Second Pyodide Cold Start</h3>
<p>Loading Pyodide, initializing the Python runtime, and installing dependencies via <code class="language-plaintext highlighter-rouge">micropip</code> (like <code class="language-plaintext highlighter-rouge">numpy</code> and <code class="language-plaintext highlighter-rouge">scipy</code>) can take anywhere from 10 to 30 seconds depending on the user’s connection. 
To hide this latency:</p>
<ul>
  <li><strong>Background Preloading</strong>: We spin up the Web Worker and start loading Pyodide in the background the moment a user lands on the platform, even while they are just browsing the catalog of environments.</li>
  <li><strong>Service Worker Caching</strong>: Once loaded, WASM binaries and pip packages are aggressively cached via IndexedDB/Cache API so subsequent visits load instantly.</li>
</ul>

<h3 id="2-session-persistence-handling-tab-closes">2. Session Persistence (Handling Tab Closes)</h3>
<p>Unlike server-side training, if a user closes their browser tab, they risk losing their active training progress. 
Currently, we save basic training metadata (such as total episodes, training steps, and best reward) as well as local demonstration logs to the browser’s <strong>localStorage</strong> for progress tracking. To solve the problem of losing active model states, our immediate next step is to implement automatic agent checkpointing (saving model weights and hyperparameters) to <strong>IndexedDB</strong>, allowing users to seamlessly resume active training sessions even after a tab close or crash.</p>

<hr />

<h2 id="the-core-loop-imitation-learning-as-a-gateway">The Core Loop: Imitation Learning as a Gateway</h2>

<p>A major roadblock in RL is sample inefficiency: an agent can take thousands of episodes just to learn how to balance a pole. For a casual user in a browser, waiting 10 minutes for <em>any</em> sign of intelligence is a retention killer.</p>

<p>We designed a dual-mode interaction loop to fix this:</p>

<ol>
  <li><strong>Human Demonstration (Direct Control)</strong>: Users can directly play the game using their keyboard/mouse to generate demonstration trajectories.</li>
  <li><strong>Imitation Learning (Behavioral Cloning)</strong>: We use these human demonstrations to train a base model instantly. The agent immediately mirrors the player’s playstyle.</li>
  <li><strong>RL Fine-Tuning</strong>: Once the agent has a basic grasp of the task, the user hands over control to the RL algorithm (PPO, DQN) to optimize the policy beyond human performance.</li>
</ol>

<p>This “human-in-the-loop” approach solves the cold-start problem of training from scratch and gives users a strong sense of ownership: <em>“This agent is learning to play like me, but better.”</em></p>

<h2 id="whats-next-the-grand-vision">What’s Next? The Grand Vision</h2>

<p>We don’t view Agenlus as just a browser game platform. Our ultimate goal is to build the foundational infrastructure for the next generation of physical control AI.</p>

<p>Our roadmap spans three major phases of expansion:</p>

<h3 id="1-a-modular-sandbox-for-physics-and-control-medium-term">1. A Modular Sandbox for Physics and Control (Medium-Term)</h3>
<p>We are building a low-code, web-based sandbox studio where creators can design custom 2D/3D environments with complex physics, import them with a single click, and define custom reward systems. By democratizing environment creation, we want to scale from a few classic control tasks to thousands of community-generated physical challenges.</p>

<h3 id="2-sim-to-real-the-robotics-bridge-long-term">2. Sim-to-Real: The Robotics Bridge (Long-Term)</h3>
<p>Training robots in the physical world is slow, dangerous, and expensive. Simulators are the only viable path forward. 
Because Agenlus agents are trained and exported in standard formats (like ONNX and TensorFlow.js models) directly from the browser, we are building a seamless deployment pipeline to physical hardware. In the future, you will be able to train an autonomous drone control policy or a robotic arm manipulator inside an Agenlus browser tab, and deploy that exact policy over-the-air (OTA) to a physical robot (such as a Raspberry Pi or micro-controller) in seconds.</p>

<h3 id="3-the-foundation-model-for-physical-control">3. The Foundation Model for Physical Control</h3>
<p>By crowdsourcing human demonstration trajectories (via our imitation learning loop) and parallelizing WebGPU training runs across our global user base, we aim to compile the largest public offline dataset of physical interactions. We want to use this data to train a <strong>Generalist Foundation Model for Physical Control</strong>—an agent that inherently understands gravity, friction, momentum, and spatial mechanics, allowing it to adapt to any physical environment or robotic hardware with zero-shot generalization.</p>

<p>We would love to get your feedback on our architecture and approach. How would you design client-side RL differently? What environments would you like to see trained in a browser?</p>

<p>Check out the project: <strong><a href="https://agenlus.com">Agenlus.com</a></strong></p>]]></content><author><name></name></author><category term="Projects" /><category term="reinforcement-learning" /><category term="webgpu" /><category term="webassembly" /><category term="machine-learning" /><category term="show-hn" /><summary type="html"><![CDATA[A Quick Primer: What is Reinforcement Learning (RL)?]]></summary></entry><entry><title type="html">About me</title><link href="https://kim-ai-gpu.github.io/2026/06/22/hello-world/" rel="alternate" type="text/html" title="About me" /><published>2026-06-22T04:00:00+00:00</published><updated>2026-06-22T04:00:00+00:00</updated><id>https://kim-ai-gpu.github.io/2026/06/22/hello-world</id><content type="html" xml:base="https://kim-ai-gpu.github.io/2026/06/22/hello-world/"><![CDATA[<h1 id="hi-there-im-youngseong-kim">Hi there, I’m YoungSeong Kim</h1>

<p><strong>Independent AI Researcher &amp; Builder</strong></p>

<p>I’m an independent researcher who believes that the most valuable contributions in AI come from building principled theoretical frameworks — ones that don’t just explain existing phenomena, but actively guide the design of new methods. My work sits at the intersection of theory and methodology: I care as much about <em>why</em> something works as <em>how</em> to make it work better.</p>

<p>The same philosophy carries into how I build. I look for the gaps that others treat as given, and build from there.</p>

<hr />

<h2 id="research">Research</h2>

<h3 id="window-is-everything-2025"><a href="https://zenodo.org/records/17103133">Window is Everything (2025)</a></h3>

<blockquote>
  <p>17K+ views · 4K+ downloads · Hacker News Front Page (Sep 2025)</p>
</blockquote>

<p>A unified theory of neural operations that decomposes any operation into three orthogonal components: <strong>Path (P)</strong>, <strong>Shape (S)</strong>, and <strong>Weight (W)</strong>.</p>

<hr />

<h2 id="projects">Projects</h2>

<p><strong><a href="https://agenlus.com">Agenlus</a></strong> — A community platform for reinforcement learning. Browser-based RL training via WebGPU + Pyodide, no install required.</p>

<p><strong><a href="https://github.com/Kim-Ai-gpu/FactorizedAttention">FactorizedAttention</a></strong> — PyTorch implementation of Factorized Attention mechanisms.</p>

<hr />

<h2 id="get-in-touch">Get in Touch</h2>

<ul>
  <li>Email: <a href="mailto:dafaafafaf33@gmail.com">dafaafafaf33@gmail.com</a></li>
  <li>Twitter / X: <a href="https://x.com/salam341353">@salam341353</a></li>
  <li>GitHub: <a href="https://github.com/Kim-Ai-gpu">Kim-Ai-gpu</a></li>
</ul>]]></content><author><name></name></author><category term="General" /><category term="intro" /><summary type="html"><![CDATA[Hi there, I’m YoungSeong Kim]]></summary></entry></feed>