From 598c74df0ad0adc1b743f0af61e1a3081d9b87f0 Mon Sep 17 00:00:00 2001 From: eric Date: Sat, 3 Jan 2026 06:48:17 +0000 Subject: [PATCH] deploy: 89dc118ecd29ad2f2e6ea29d8e1e0de502ed0201 --- 404.html | 2 +- about/index.html | 2 +- authors/index.html | 2 +- categories/index.html | 2 +- index.html | 6 +-- index.xml | 3 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 47 +++++++++++++++++++ .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- posts/index.html | 8 ++-- posts/index.xml | 3 +- posts/jellyfin-sso-with-authentik/index.html | 2 +- .../index.html | 2 +- posts/open-webui-openai-websearch/index.html | 2 +- .../index.html | 2 +- posts/page/2/index.html | 8 ++-- posts/page/3/index.html | 8 ++++ posts/ppo-for-language-models/index.html | 2 +- posts/quantization-in-llms/index.html | 2 +- .../index.html | 2 +- posts/supabase-deep-dive/index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- posts/transformer-s-core-mechanics/index.html | 2 +- .../index.html | 2 +- posts/useful/index.html | 2 +- posts/vattention/index.html | 2 +- series/index.html | 2 +- sitemap.xml | 2 +- tags/index.html | 2 +- 34 files changed, 97 insertions(+), 40 deletions(-) create mode 100644 posts/debugging-authentik-performance/index.html create mode 100644 posts/page/3/index.html diff --git a/404.html b/404.html index 354a8ac..83476d0 100644 --- a/404.html +++ b/404.html @@ -4,4 +4,4 @@ 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/about/index.html b/about/index.html index 527e02d..0f0a99d 100644 --- a/about/index.html +++ b/about/index.html @@ -13,4 +13,4 @@ My work focuses on Infrastructure Performance and Customer Engineering, specific 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/authors/index.html b/authors/index.html index 8ee776c..078ba32 100644 --- a/authors/index.html +++ b/authors/index.html @@ -4,4 +4,4 @@ 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 988c2b6..2b1d236 100644 --- a/categories/index.html +++ b/categories/index.html @@ -4,4 +4,4 @@ 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/index.html b/index.html index 5184207..6a8d668 100644 --- a/index.html +++ b/index.html @@ -1,8 +1,8 @@ Eric X. Liu's Personal Page
avatar

Eric X. Liu

  • -
© +
avatar

Eric X. Liu

  • +
\ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/index.xml b/index.xml index 70113ee..a28fece 100644 --- a/index.xml +++ b/index.xml @@ -1,4 +1,5 @@ -Eric X. Liu's Personal Pagehttps://ericxliu.me/Recent content on Eric X. Liu's Personal PageHugoenMon, 29 Dec 2025 07:15:58 +0000How I Got Open WebUI Talking to OpenAI Web Searchhttps://ericxliu.me/posts/open-webui-openai-websearch/Mon, 29 Dec 2025 00:00:00 +0000https://ericxliu.me/posts/open-webui-openai-websearch/<p>OpenAI promised native web search in GPT‑5, but LiteLLM proxy deployments (and by extension Open WebUI) still choke on it—issue <a href="https://github.com/BerriAI/litellm/issues/13042" class="external-link" target="_blank" rel="noopener">#13042</a> tracks the fallout. I needed grounded answers inside Open WebUI anyway, so I built a workaround: route GPT‑5 traffic through the Responses API and mask every <code>web_search_call</code> before the UI ever sees it.</p> +Eric X. Liu's Personal Pagehttps://ericxliu.me/Recent content on Eric X. Liu's Personal PageHugoenSat, 03 Jan 2026 06:23:35 +0000Why Your "Resilient" Homelab is Slower Than a Raspberry Pihttps://ericxliu.me/posts/debugging-authentik-performance/Fri, 02 Jan 2026 00:00:00 +0000https://ericxliu.me/posts/debugging-authentik-performance/<p>In the world of self-hosting, there are many metrics for success: 99.9% uptime, sub-second latency, or a perfect GitOps pipeline. But for those of us running &ldquo;production&rdquo; at home, there is only one metric that truly matters: <strong>The Wife Acceptance Factor (WAF)</strong>.</p> +<p>My detailed Grafana dashboards said everything was fine. But my wife said the SSO login was &ldquo;slow sometimes.&rdquo; She was right. Debugging it took me down a rabbit hole of connection pooling, misplaced assumptions, and the harsh reality of running databases on distributed storage.</p>How I Got Open WebUI Talking to OpenAI Web Searchhttps://ericxliu.me/posts/open-webui-openai-websearch/Mon, 29 Dec 2025 00:00:00 +0000https://ericxliu.me/posts/open-webui-openai-websearch/<p>OpenAI promised native web search in GPT‑5, but LiteLLM proxy deployments (and by extension Open WebUI) still choke on it—issue <a href="https://github.com/BerriAI/litellm/issues/13042" class="external-link" target="_blank" rel="noopener">#13042</a> tracks the fallout. I needed grounded answers inside Open WebUI anyway, so I built a workaround: route GPT‑5 traffic through the Responses API and mask every <code>web_search_call</code> before the UI ever sees it.</p> <p>This post documents the final setup, the hotfix script that keeps LiteLLM honest, and the tests that prove Open WebUI now streams cited answers without trying to execute the tool itself.</p>From Gemini-3-Flash to T5-Gemma-2 A Journey in Distilling a Family Finance LLMhttps://ericxliu.me/posts/technical-deep-dive-llm-categorization/Sat, 27 Dec 2025 00:00:00 +0000https://ericxliu.me/posts/technical-deep-dive-llm-categorization/<p>Running a family finance system is surprisingly complex. What starts as a simple spreadsheet often evolves into a web of rules, exceptions, and &ldquo;wait, was this dinner or <em>vacation</em> dinner?&rdquo; questions.</p> <p>For years, I relied on a rule-based system to categorize our credit card transactions. It worked&hellip; mostly. But maintaining <code>if &quot;UBER&quot; in description and amount &gt; 50</code> style rules is a never-ending battle against the entropy of merchant names and changing habits.</p>Abouthttps://ericxliu.me/about/Fri, 19 Dec 2025 22:46:12 -0800https://ericxliu.me/about/<img src="https://ericxliu.me/images/about.jpeg" alt="Eric Liu" width="300" style="float: left; margin-right: 1.5rem; margin-bottom: 1rem; border-radius: 8px;"/> <p>Hi, I&rsquo;m <strong>Eric Liu</strong>.</p> diff --git a/posts/benchmarking-llms-on-jetson-orin-nano/index.html b/posts/benchmarking-llms-on-jetson-orin-nano/index.html index a45ecdd..1755c22 100644 --- a/posts/benchmarking-llms-on-jetson-orin-nano/index.html +++ b/posts/benchmarking-llms-on-jetson-orin-nano/index.html @@ -62,4 +62,4 @@ After running 66 inference tests across seven different language models ranging 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/breville-barista-pro-maintenance/index.html b/posts/breville-barista-pro-maintenance/index.html index 3d5750d..567476a 100644 --- a/posts/breville-barista-pro-maintenance/index.html +++ b/posts/breville-barista-pro-maintenance/index.html @@ -25,4 +25,4 @@ Understanding the Two Primary Maintenance Cycles Link to heading The Breville Ba 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/debugging-authentik-performance/index.html b/posts/debugging-authentik-performance/index.html new file mode 100644 index 0000000..558a712 --- /dev/null +++ b/posts/debugging-authentik-performance/index.html @@ -0,0 +1,47 @@ +Why Your "Resilient" Homelab is Slower Than a Raspberry Pi · Eric X. Liu's Personal Page

Why Your "Resilient" Homelab is Slower Than a Raspberry Pi

In the world of self-hosting, there are many metrics for success: 99.9% uptime, sub-second latency, or a perfect GitOps pipeline. But for those of us running “production” at home, there is only one metric that truly matters: The Wife Acceptance Factor (WAF).

My detailed Grafana dashboards said everything was fine. But my wife said the SSO login was “slow sometimes.” She was right. Debugging it took me down a rabbit hole of connection pooling, misplaced assumptions, and the harsh reality of running databases on distributed storage.

Here is a breakdown of the symptoms, the red herrings, and the root cause that was hiding in plain sight.

The Environment + +Link to heading

My homelab is designed for node-level resilience, which adds complexity to the storage layer. It is not running on a single server, but rather a 3-node Proxmox cluster where every component is redundant:

  • Orchestration: Kubernetes (k3s) managed via Flux CD.
  • Storage: A Ceph cluster running on the Proxmox nodes, utilizing enterprise NVMe SSDs (bluestore) for OSDs.
  • Database: Postgres managed by the Zalando Postgres Operator, with persistent volumes (PVCs) provisioned on Ceph RBD (block storage).
  • Identity: Authentik for SSO.

While the underlying disks are blazing fast NVMe drives, the architecture dictates that a write to a Ceph RBD volume is not complete until it is replicated over the network and acknowledged by multiple OSDs. This setup provides incredible resilience—I can pull the plug on a node and nothing stops—but it introduces unavoidable network latency for synchronous write operations. Keep this particular trade-off in mind; it plays a starring role in the investigation later.

The Symptom + +Link to heading

The issue was insidious because it was intermittent. Clicking “Login” would sometimes hang for 5-8 seconds, while other times it was instant. To an engineer, “sometimes slow” is the worst kind of bug because it defies easy reproduction.

The breakthrough came when I put aside the server-side Grafana dashboards and looked at the client side. By opening Chrome DevTools and monitoring the Network tab during a slow login attempt, I was able to capture the exact failing request.

I identified the culprit: the /api/v3/core/applications/ endpoint. It wasn’t a connection timeout or a DNS issue; the server was simply taking 5+ seconds to respond to this specific GET request.

Armed with this “smoking gun,” I copied the request as cURL (preserving the session cookies) and converted it into a Python benchmark script (reproduce_latency.py). This allowed me to reliably trigger the latency on demand, turning an intermittent “heisenbug” into a reproducible test case.

The results were validating and horrifying:

Request 1: 2.1642s
+Request 2: 8.4321s
+Request 3: 5.1234s
+...
+Avg Latency: 4.8s
+

Investigation & Red Herrings + +Link to heading

Attempt 1: The Connection Overhead Hypothesis + +Link to heading

The Hypothesis: Authentik defaults to CONN_MAX_AGE=0, meaning it closes the database connection after every request. Since I enforce SSL for the database, I assumed the handshake overhead was killing performance.

The Fix Attempt: I updated the Authentik configuration to enable persistent connections:

env:
+  - name: AUTHENTIK_POSTGRESQL__CONN_MAX_AGE
+    value: "600"
+

The Reality: The benchmark showed a slight improvement (~4.2s average), but the random 5-8s spikes remained. The 300ms connection setup was a factor, but not the root cause. As a side note, enabling this without configuring TCP Keepalives caused the Authentik worker to crash with OperationalError('the connection is closed') when firewalls silently dropped idle connections.

Attempt 2: CPU Starvation + +Link to heading

The Hypothesis: The pods were CPU throttled during request processing.

The Reality: kubectl top pods showed the server using only 29m (2.9% of a core). Even increasing the Gunicorn worker count from 2 to 4 did not improve the latency of individual requests, though it did help with concurrency.

The Root Cause: A Perfect Storm + +Link to heading

I was stuck. The CPU was idle, network was fine, and individual database queries were fast (<1ms). Then I looked at the traffic patterns:

  1. Redis: Almost zero traffic.
  2. Postgres: High WALSync and WALWrite wait times.
  3. The Table: django_postgres_cache_cacheentry was getting hammered.

Insight: The Breaking Change + +Link to heading

I checked the release notes for Authentik 2025.10:

Breaking Change: Redis is no longer used for caching. All caching has been moved to the PostgreSQL database to simplify deployment.

This architectural shift created a bottleneck specific to my storage backend:

  1. The Change: Every API request triggers a cache write (session updates) to Postgres instead of Redis.
  2. The Default: Postgres defaults to synchronous_commit = on. A transaction is not considered “committed” until it is flushed to disk.
  3. The Storage: Ceph RBD replicates data across the network to multiple OSDs.

Every time I loaded the dashboard, Authentik tried to update the cache. Postgres paused, verified the write was replicated to 3 other servers over the network (WAL Sync), and then responded.

The Solution + +Link to heading

I couldn’t move the database to local NVMe without losing the failover capabilities I built the cluster for. However, for a cache-heavy workload, I could compromise on strict durability.

I patched the Postgres configuration to disable synchronous commits:

spec:
+  postgresql:
+    parameters:
+      synchronous_commit: "off"  # The magic switch
+

What this does: Postgres returns “Success” to the application as soon as the transaction is in memory. It flushes to disk in the background. In the event of a crash, I might lose the last ~500ms of data (mostly cache entries), which is an acceptable trade-off.

Verification + +Link to heading

I re-ran the benchmark with synchronous_commit = off.

MetricBefore (sync=on)After (sync=off)Improvement
Sequential (Avg)~4.8s0.40s12x Faster
Parallel (Wall)~10.5s2.45s4x Faster

The latency vanished. The login became instant.

Key Insights + +Link to heading

  • Read Release Notes: The shift from Redis to Postgres for caching was a major architectural change that I missed during the upgrade.
  • Storage Matters: Distributed storage (Ceph/Longhorn) handles linear writes well, but struggles with latency-sensitive, high-frequency sync operations like WAL updates.
  • Tuning Postgres: For workloads where immediate durability is less critical than latency (like caching tables), synchronous_commit = off is a powerful tool.
  • Observability: The “Wife Test” is a valid monitoring alert. If a user complains it’s slow, investigate the P99 latency, not just the average.

References + +Link to heading

\ No newline at end of file diff --git a/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/index.html b/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/index.html index c84ef35..96aeaac 100644 --- a/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/index.html +++ b/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/index.html @@ -20,4 +20,4 @@ Our overarching philosophy is simple: isolate and change only one variable at a 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/flashing-jetson-orin-nano-in-virtualized-environments/index.html b/posts/flashing-jetson-orin-nano-in-virtualized-environments/index.html index 10ca08f..f9dbd87 100644 --- a/posts/flashing-jetson-orin-nano-in-virtualized-environments/index.html +++ b/posts/flashing-jetson-orin-nano-in-virtualized-environments/index.html @@ -168,4 +168,4 @@ Flashing NVIDIA Jetson devices remotely presents unique challenges when the host 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/how-rvq-teaches-llms-to-see-and-hear/index.html b/posts/how-rvq-teaches-llms-to-see-and-hear/index.html index 60d975d..35ab140 100644 --- a/posts/how-rvq-teaches-llms-to-see-and-hear/index.html +++ b/posts/how-rvq-teaches-llms-to-see-and-hear/index.html @@ -18,4 +18,4 @@ The answer lies in creating a universal language—a bridge between the continuo 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/index.html b/posts/index.html index af6b9a4..a27961d 100644 --- a/posts/index.html +++ b/posts/index.html @@ -1,6 +1,7 @@ Posts · Eric X. Liu's Personal Page
\ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/index.xml b/posts/index.xml index 4796e22..c353add 100644 --- a/posts/index.xml +++ b/posts/index.xml @@ -1,4 +1,5 @@ -Posts on Eric X. Liu's Personal Pagehttps://ericxliu.me/posts/Recent content in Posts on Eric X. Liu's Personal PageHugoenMon, 29 Dec 2025 07:15:58 +0000How I Got Open WebUI Talking to OpenAI Web Searchhttps://ericxliu.me/posts/open-webui-openai-websearch/Mon, 29 Dec 2025 00:00:00 +0000https://ericxliu.me/posts/open-webui-openai-websearch/<p>OpenAI promised native web search in GPT‑5, but LiteLLM proxy deployments (and by extension Open WebUI) still choke on it—issue <a href="https://github.com/BerriAI/litellm/issues/13042" class="external-link" target="_blank" rel="noopener">#13042</a> tracks the fallout. I needed grounded answers inside Open WebUI anyway, so I built a workaround: route GPT‑5 traffic through the Responses API and mask every <code>web_search_call</code> before the UI ever sees it.</p> +Posts on Eric X. Liu's Personal Pagehttps://ericxliu.me/posts/Recent content in Posts on Eric X. Liu's Personal PageHugoenSat, 03 Jan 2026 06:23:35 +0000Why Your "Resilient" Homelab is Slower Than a Raspberry Pihttps://ericxliu.me/posts/debugging-authentik-performance/Fri, 02 Jan 2026 00:00:00 +0000https://ericxliu.me/posts/debugging-authentik-performance/<p>In the world of self-hosting, there are many metrics for success: 99.9% uptime, sub-second latency, or a perfect GitOps pipeline. But for those of us running &ldquo;production&rdquo; at home, there is only one metric that truly matters: <strong>The Wife Acceptance Factor (WAF)</strong>.</p> +<p>My detailed Grafana dashboards said everything was fine. But my wife said the SSO login was &ldquo;slow sometimes.&rdquo; She was right. Debugging it took me down a rabbit hole of connection pooling, misplaced assumptions, and the harsh reality of running databases on distributed storage.</p>How I Got Open WebUI Talking to OpenAI Web Searchhttps://ericxliu.me/posts/open-webui-openai-websearch/Mon, 29 Dec 2025 00:00:00 +0000https://ericxliu.me/posts/open-webui-openai-websearch/<p>OpenAI promised native web search in GPT‑5, but LiteLLM proxy deployments (and by extension Open WebUI) still choke on it—issue <a href="https://github.com/BerriAI/litellm/issues/13042" class="external-link" target="_blank" rel="noopener">#13042</a> tracks the fallout. I needed grounded answers inside Open WebUI anyway, so I built a workaround: route GPT‑5 traffic through the Responses API and mask every <code>web_search_call</code> before the UI ever sees it.</p> <p>This post documents the final setup, the hotfix script that keeps LiteLLM honest, and the tests that prove Open WebUI now streams cited answers without trying to execute the tool itself.</p>From Gemini-3-Flash to T5-Gemma-2 A Journey in Distilling a Family Finance LLMhttps://ericxliu.me/posts/technical-deep-dive-llm-categorization/Sat, 27 Dec 2025 00:00:00 +0000https://ericxliu.me/posts/technical-deep-dive-llm-categorization/<p>Running a family finance system is surprisingly complex. What starts as a simple spreadsheet often evolves into a web of rules, exceptions, and &ldquo;wait, was this dinner or <em>vacation</em> dinner?&rdquo; questions.</p> <p>For years, I relied on a rule-based system to categorize our credit card transactions. It worked&hellip; mostly. But maintaining <code>if &quot;UBER&quot; in description and amount &gt; 50</code> style rules is a never-ending battle against the entropy of merchant names and changing habits.</p>The Convergence of Fast Weights, Linear Attention, and State Space Modelshttps://ericxliu.me/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/Fri, 19 Dec 2025 00:00:00 +0000https://ericxliu.me/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/<p>Modern Large Language Models (LLMs) are dominated by the Transformer architecture. However, as context windows grow, the computational cost of the Transformer’s attention mechanism has become a primary bottleneck. Recent discussions in the AI community—most notably by Geoffrey Hinton—have highlighted a theoretical link between biological memory mechanisms (&ldquo;Fast Weights&rdquo;) and efficient engineering solutions like Linear Transformers and State Space Models (SSMs).</p> <p>This article explores the mathematical equivalence between Hinton’s concept of Fast Weights as Associative Memory and the recurrence mechanisms found in models such as Mamba and RWKV.</p>vAttentionhttps://ericxliu.me/posts/vattention/Mon, 08 Dec 2025 00:00:00 +0000https://ericxliu.me/posts/vattention/<p>Large Language Model (LLM) inference is memory-bound, primarily due to the Key-Value (KV) cache—a store of intermediate state that grows linearly with sequence length. Efficient management of this memory is critical for throughput. While <strong>PagedAttention</strong> (popularized by vLLM) became the industry standard by solving memory fragmentation via software, recent research suggests that leveraging the GPU’s native hardware Memory Management Unit (MMU) offers a more performant and portable solution.</p> diff --git a/posts/jellyfin-sso-with-authentik/index.html b/posts/jellyfin-sso-with-authentik/index.html index 637b6bb..6b8af0a 100644 --- a/posts/jellyfin-sso-with-authentik/index.html +++ b/posts/jellyfin-sso-with-authentik/index.html @@ -71,4 +71,4 @@ Do not rely on header forwarding magic. Force the scheme in the plugin configura 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/index.html b/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/index.html index bb04d95..25db4ce 100644 --- a/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/index.html +++ b/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/index.html @@ -44,4 +44,4 @@ The Top-K routing mechanism, as illustrated in the provided ima 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/open-webui-openai-websearch/index.html b/posts/open-webui-openai-websearch/index.html index 81556e9..0b62295 100644 --- a/posts/open-webui-openai-websearch/index.html +++ b/posts/open-webui-openai-websearch/index.html @@ -86,4 +86,4 @@ This post documents the final setup, the hotfix script that keeps LiteLLM honest 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/openwrt-mwan3-wireguard-endpoint-exclusion/index.html b/posts/openwrt-mwan3-wireguard-endpoint-exclusion/index.html index 131b8bb..a5b92f0 100644 --- a/posts/openwrt-mwan3-wireguard-endpoint-exclusion/index.html +++ b/posts/openwrt-mwan3-wireguard-endpoint-exclusion/index.html @@ -98,4 +98,4 @@ When using WireGuard together with MWAN3 on OpenWrt, the tunnel can fail to esta 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/page/2/index.html b/posts/page/2/index.html index 7dfb7f5..7d6a596 100644 --- a/posts/page/2/index.html +++ b/posts/page/2/index.html @@ -1,6 +1,7 @@ Posts · Eric X. Liu's Personal Page
\ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/page/3/index.html b/posts/page/3/index.html new file mode 100644 index 0000000..e83ccdd --- /dev/null +++ b/posts/page/3/index.html @@ -0,0 +1,8 @@ +Posts · Eric X. Liu's Personal Page
\ No newline at end of file diff --git a/posts/ppo-for-language-models/index.html b/posts/ppo-for-language-models/index.html index d8d6738..c166e31 100644 --- a/posts/ppo-for-language-models/index.html +++ b/posts/ppo-for-language-models/index.html @@ -25,4 +25,4 @@ where δ_t = r_t + γV(s_{t+1}) - V(s_t)

  • γ (gam 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/quantization-in-llms/index.html b/posts/quantization-in-llms/index.html index ecf0e39..30cd7da 100644 --- a/posts/quantization-in-llms/index.html +++ b/posts/quantization-in-llms/index.html @@ -7,4 +7,4 @@ 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/secure-boot-dkms-and-mok-on-proxmox-debian/index.html b/posts/secure-boot-dkms-and-mok-on-proxmox-debian/index.html index deabfc7..02bef76 100644 --- a/posts/secure-boot-dkms-and-mok-on-proxmox-debian/index.html +++ b/posts/secure-boot-dkms-and-mok-on-proxmox-debian/index.html @@ -59,4 +59,4 @@ nvidia-smi failed to communicate with the NVIDIA driver modprobe nvidia → “K 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/supabase-deep-dive/index.html b/posts/supabase-deep-dive/index.html index a1167eb..52e7968 100644 --- a/posts/supabase-deep-dive/index.html +++ b/posts/supabase-deep-dive/index.html @@ -90,4 +90,4 @@ Supabase enters this space with a radically different philosophy: transparency. 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/index.html b/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/index.html index bf9adf9..5e61254 100644 --- a/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/index.html +++ b/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/index.html @@ -30,4 +30,4 @@ But to truly understand the field, we must look at the pivotal models that explo 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/technical-deep-dive-llm-categorization/index.html b/posts/technical-deep-dive-llm-categorization/index.html index 3d2bc39..162f3aa 100644 --- a/posts/technical-deep-dive-llm-categorization/index.html +++ b/posts/technical-deep-dive-llm-categorization/index.html @@ -73,4 +73,4 @@ It turned out to be a syntax error in my arguments passed to the Trainer[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/index.html b/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/index.html index 351d20e..16ab311 100644 --- a/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/index.html +++ b/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/index.html @@ -26,4 +26,4 @@ This article explores the mathematical equivalence between Hinton’s concept of 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/transformer-s-core-mechanics/index.html b/posts/transformer-s-core-mechanics/index.html index 1be1deb..b0c85d4 100644 --- a/posts/transformer-s-core-mechanics/index.html +++ b/posts/transformer-s-core-mechanics/index.html @@ -36,4 +36,4 @@ In deep learning, a “channel” can be thought of as a feature dimensi 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/unifi-vlan-migration-to-zone-based-architecture/index.html b/posts/unifi-vlan-migration-to-zone-based-architecture/index.html index a070506..6e66354 100644 --- a/posts/unifi-vlan-migration-to-zone-based-architecture/index.html +++ b/posts/unifi-vlan-migration-to-zone-based-architecture/index.html @@ -28,4 +28,4 @@ This article documents that journey. It details the pitfalls encountered, the co 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/useful/index.html b/posts/useful/index.html index a6c7856..12b90a2 100644 --- a/posts/useful/index.html +++ b/posts/useful/index.html @@ -9,4 +9,4 @@ One-minute read
    • [f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/posts/vattention/index.html b/posts/vattention/index.html index 6db7007..af77950 100644 --- a/posts/vattention/index.html +++ b/posts/vattention/index.html @@ -31,4 +31,4 @@ The GPU TLB hierarchy is sensitive to page sizes.

      • 4KB Pages:< 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/series/index.html b/series/index.html index cbf155b..259dffa 100644 --- a/series/index.html +++ b/series/index.html @@ -4,4 +4,4 @@ 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index d3e0bdf..54ab83c 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://ericxliu.me/2025-12-29T07:15:58+00:00weekly0.5https://ericxliu.me/posts/open-webui-openai-websearch/2025-12-29T07:15:58+00:00weekly0.5https://ericxliu.me/posts/2025-12-29T07:15:58+00:00weekly0.5https://ericxliu.me/posts/technical-deep-dive-llm-categorization/2025-12-27T22:05:12+00:00weekly0.5https://ericxliu.me/about/2025-12-20T09:52:07-08:00weekly0.5https://ericxliu.me/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/2025-12-19T21:21:55+00:00weekly0.5https://ericxliu.me/posts/vattention/2025-12-19T21:21:55+00:00weekly0.5https://ericxliu.me/posts/jellyfin-sso-with-authentik/2025-12-28T21:21:42+00:00weekly0.5https://ericxliu.me/posts/benchmarking-llms-on-jetson-orin-nano/2025-10-04T20:41:50+00:00weekly0.5https://ericxliu.me/posts/flashing-jetson-orin-nano-in-virtualized-environments/2025-10-02T08:42:39+00:00weekly0.5https://ericxliu.me/posts/openwrt-mwan3-wireguard-endpoint-exclusion/2025-10-02T08:34:05+00:00weekly0.5https://ericxliu.me/posts/unifi-vlan-migration-to-zone-based-architecture/2025-10-02T08:42:39+00:00weekly0.5https://ericxliu.me/posts/quantization-in-llms/2025-08-20T06:02:35+00:00weekly0.5https://ericxliu.me/posts/breville-barista-pro-maintenance/2025-08-20T06:04:36+00:00weekly0.5https://ericxliu.me/posts/secure-boot-dkms-and-mok-on-proxmox-debian/2025-08-14T06:50:22+00:00weekly0.5https://ericxliu.me/posts/how-rvq-teaches-llms-to-see-and-hear/2025-08-08T17:36:52+00:00weekly0.5https://ericxliu.me/posts/supabase-deep-dive/2025-08-04T03:59:37+00:00weekly0.5https://ericxliu.me/posts/ppo-for-language-models/2025-10-02T08:42:39+00:00weekly0.5https://ericxliu.me/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/2025-08-03T06:02:48+00:00weekly0.5https://ericxliu.me/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/2025-08-03T03:41:10+00:00weekly0.5https://ericxliu.me/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/2025-08-03T04:20:20+00:00weekly0.5https://ericxliu.me/posts/transformer-s-core-mechanics/2025-10-02T08:42:39+00:00weekly0.5https://ericxliu.me/posts/useful/2025-08-03T08:37:28-07:00weekly0.5https://ericxliu.me/authors/weekly0.5https://ericxliu.me/categories/weekly0.5https://ericxliu.me/series/weekly0.5https://ericxliu.me/tags/weekly0.5 \ No newline at end of file +https://ericxliu.me/2026-01-03T06:23:35+00:00weekly0.5https://ericxliu.me/posts/2026-01-03T06:23:35+00:00weekly0.5https://ericxliu.me/posts/debugging-authentik-performance/2026-01-03T06:23:35+00:00weekly0.5https://ericxliu.me/posts/open-webui-openai-websearch/2025-12-29T07:15:58+00:00weekly0.5https://ericxliu.me/posts/technical-deep-dive-llm-categorization/2025-12-27T22:05:12+00:00weekly0.5https://ericxliu.me/about/2025-12-20T09:52:07-08:00weekly0.5https://ericxliu.me/posts/the-convergence-of-fast-weights-linear-attention-and-state-space-models/2025-12-19T21:21:55+00:00weekly0.5https://ericxliu.me/posts/vattention/2025-12-19T21:21:55+00:00weekly0.5https://ericxliu.me/posts/jellyfin-sso-with-authentik/2025-12-28T21:21:42+00:00weekly0.5https://ericxliu.me/posts/benchmarking-llms-on-jetson-orin-nano/2025-10-04T20:41:50+00:00weekly0.5https://ericxliu.me/posts/flashing-jetson-orin-nano-in-virtualized-environments/2025-10-02T08:42:39+00:00weekly0.5https://ericxliu.me/posts/openwrt-mwan3-wireguard-endpoint-exclusion/2025-10-02T08:34:05+00:00weekly0.5https://ericxliu.me/posts/unifi-vlan-migration-to-zone-based-architecture/2025-10-02T08:42:39+00:00weekly0.5https://ericxliu.me/posts/quantization-in-llms/2025-08-20T06:02:35+00:00weekly0.5https://ericxliu.me/posts/breville-barista-pro-maintenance/2025-08-20T06:04:36+00:00weekly0.5https://ericxliu.me/posts/secure-boot-dkms-and-mok-on-proxmox-debian/2025-08-14T06:50:22+00:00weekly0.5https://ericxliu.me/posts/how-rvq-teaches-llms-to-see-and-hear/2025-08-08T17:36:52+00:00weekly0.5https://ericxliu.me/posts/supabase-deep-dive/2025-08-04T03:59:37+00:00weekly0.5https://ericxliu.me/posts/ppo-for-language-models/2025-10-02T08:42:39+00:00weekly0.5https://ericxliu.me/posts/mixture-of-experts-moe-models-challenges-solutions-in-practice/2025-08-03T06:02:48+00:00weekly0.5https://ericxliu.me/posts/t5-the-transformer-that-zigged-when-others-zagged-an-architectural-deep-dive/2025-08-03T03:41:10+00:00weekly0.5https://ericxliu.me/posts/espresso-theory-application-a-guide-for-the-breville-barista-pro/2025-08-03T04:20:20+00:00weekly0.5https://ericxliu.me/posts/transformer-s-core-mechanics/2025-10-02T08:42:39+00:00weekly0.5https://ericxliu.me/posts/useful/2025-08-03T08:37:28-07:00weekly0.5https://ericxliu.me/authors/weekly0.5https://ericxliu.me/categories/weekly0.5https://ericxliu.me/series/weekly0.5https://ericxliu.me/tags/weekly0.5 \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index b105905..93d28e5 100644 --- a/tags/index.html +++ b/tags/index.html @@ -4,4 +4,4 @@ 2016 - 2026 Eric X. Liu -[f1178d3] \ No newline at end of file +[89dc118] \ No newline at end of file