From 346f1f14507dad66b7b2ad085e4fc07836f30727 Mon Sep 17 00:00:00 2001 From: eric Date: Mon, 29 Dec 2025 07:17:38 +0000 Subject: [PATCH] deploy: f1178d37f5d35be3f77451fa56b2e3cea61ec281 --- 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 | 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 | 89 +++++++++++++++++++ .../index.html | 2 +- posts/page/2/index.html | 5 +- 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 +- 32 files changed, 129 insertions(+), 37 deletions(-) create mode 100644 posts/open-webui-openai-websearch/index.html diff --git a/404.html b/404.html index a02e083..75f0f1d 100644 --- a/404.html +++ b/404.html @@ -4,4 +4,4 @@ 2016 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/about/index.html b/about/index.html index 509e466..c7c261b 100644 --- a/about/index.html +++ b/about/index.html @@ -13,4 +13,4 @@ My work focuses on Infrastructure Performance and Customer Engineering, specific 2016 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/authors/index.html b/authors/index.html index 3f62678..5a81e24 100644 --- a/authors/index.html +++ b/authors/index.html @@ -4,4 +4,4 @@ 2016 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/categories/index.html b/categories/index.html index b1c3620..30d47b1 100644 --- a/categories/index.html +++ b/categories/index.html @@ -4,4 +4,4 @@ 2016 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/index.html b/index.html index 022d62d..b7459cd 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 +[f1178d3] \ No newline at end of file diff --git a/index.xml b/index.xml index 3ec7063..70113ee 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 PageHugoenSun, 28 Dec 2025 21:21:42 +0000From 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> +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> +<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> <p>I am a <strong>Staff Software Engineer and Tech Lead Manager (TLM)</strong> at <strong>Google</strong>, based in Sunnyvale, CA.</p> diff --git a/posts/benchmarking-llms-on-jetson-orin-nano/index.html b/posts/benchmarking-llms-on-jetson-orin-nano/index.html index 1f25c6c..9c4b478 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 a4404e3..68973e2 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 eafcc4c..bbc0dd5 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 ab14212..d9b691c 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 79c4305..9fa753b 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/posts/index.html b/posts/index.html index df60a61..0171582 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 +[f1178d3] \ No newline at end of file diff --git a/posts/index.xml b/posts/index.xml index d99c2bf..4796e22 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 PageHugoenSun, 28 Dec 2025 21:21:42 +0000From 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> +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> +<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> <h4 id="the-status-quo-pagedattention-and-software-tables"> diff --git a/posts/jellyfin-sso-with-authentik/index.html b/posts/jellyfin-sso-with-authentik/index.html index 54ecfee..2a0c2e0 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 3f40932..0cfc88f 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/posts/open-webui-openai-websearch/index.html b/posts/open-webui-openai-websearch/index.html new file mode 100644 index 0000000..dbb6213 --- /dev/null +++ b/posts/open-webui-openai-websearch/index.html @@ -0,0 +1,89 @@ +How I Got Open WebUI Talking to OpenAI Web Search · Eric X. Liu's Personal Page

How I Got Open WebUI Talking to OpenAI Web Search

OpenAI promised native web search in GPT‑5, but LiteLLM proxy deployments (and by extension Open WebUI) still choke on it—issue #13042 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 web_search_call before the UI ever sees it.

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.

Why Open WebUI Broke + +Link to heading

  1. Wrong API surface. /v1/chat/completions still rejects type: "web_search" with Invalid value: 'web_search'. Supported values are: 'function' and 'custom'.
  2. LiteLLM tooling gap. The OpenAI TypedDicts in litellm/types/llms/openai.py only allow Literal["function"]. Even if the backend call succeeded, streaming would crash when it saw a new tool type.
  3. Open WebUI assumptions. The UI eagerly parses every tool delta, so when LiteLLM streamed the raw web_search_call chunk, the UI tried to execute it, failed to parse the arguments, and aborted the chat.

Fixing all three required touching both the proxy configuration and the LiteLLM transformation path.

Step 1 – Route GPT‑5 Through the Responses API + +Link to heading

LiteLLM’s Responses bridge activates whenever the backend model name starts with openai/responses/. I added a dedicated alias, gpt-5.2-search, that hardcodes the Responses API plus web search metadata. Existing models (reasoning, embeddings, TTS) stay untouched.

# proxy-config.yaml (sanitized)
+model_list:
+  - model_name: gpt-5.2-search
+    litellm_params:
+      model: openai/responses/openai/gpt-5.2
+      api_key: <OPENAI_API_KEY>
+      reasoning_effort: high
+      merge_reasoning_content_in_choices: true
+      tools:
+        - type: web_search
+          user_location:
+            type: approximate
+            country: US
+

Any client (Open WebUI included) can now request model: "gpt-5.2-search" over the standard /v1/chat/completions endpoint, and LiteLLM handles the Responses API hop transparently.

Step 2 – Mask web_search_call Chunks Inside LiteLLM + +Link to heading

Even with the right API, LiteLLM still needs to stream deltas Open WebUI can digest. My hotfix.py script copies the LiteLLM source into /tmp/patch/litellm, then rewrites two files. This script runs as part of the Helm release’s init hook so I can inject fixes directly into the container filesystem at pod start. That saves me from rebuilding and pushing new images every time LiteLLM upstream changes (or refuses a patch), which is critical while waiting for issue #13042 to land. I’ll try to upstream the fix, but this is admittedly hacky, so timelines are uncertain.

  1. openai.py TypedDicts: extend the tool chunk definitions to accept Literal["web_search"].
  2. litellm_responses_transformation/transformation.py: intercept every streaming item and short-circuit anything with type == "web_search_call", returning an empty assistant delta instead of a tool call.
# Excerpt from hotfix.py
+tool_call_chunk_original = (
+    'class ChatCompletionToolCallChunk(TypedDict):  # result of /chat/completions call\n'
+    '    id: Optional[str]\n'
+    '    type: Literal["function"]'
+)
+tool_call_chunk_patch = tool_call_chunk_original.replace(
+    'Literal["function"]', 'Literal["function", "web_search"]'
+)
+...
+if tool_call_chunk_original in content:
+    content = content.replace(tool_call_chunk_original, tool_call_chunk_patch, 1)
+
added_block = """            elif output_item.get("type") == "web_search_call":
+                # Mask the call: Open WebUI should never see tool metadata
+                action_payload = output_item.get("action")
+                verbose_logger.debug(
+                    "Chat provider: masking web_search_call (added) call_id=%s action=%s",
+                    output_item.get("call_id"),
+                    action_payload,
+                )
+                return ModelResponseStream(
+                    choices=[
+                        StreamingChoices(
+                            index=0,
+                            delta=Delta(content=""),
+                            finish_reason=None,
+                        )
+                    ]
+                )
+"""
+

These patches ensure LiteLLM never emits a tool_calls delta for web_search. Open WebUI only receives assistant text chunks, so it happily renders the model response and the inline citations the Responses API already provides.

Step 3 – Prove It with cURL (and Open WebUI) + +Link to heading

I keep a simple smoke test (litellm_smoke_test.sh) that hits the public ingress with and without streaming. The only secrets are placeholders here, but the structure is the same.

#!/usr/bin/env bash
+set -euo pipefail
+
+echo "Testing non-streaming..."
+curl "https://api.ericxliu.me/v1/chat/completions" \
+  -H "Authorization: Bearer <LITELLM_MASTER_KEY>" \
+  -H "Content-Type: application/json" \
+  -d '{
+    "model": "gpt-5.2-search",
+    "messages": [{"role": "user", "content": "Find the sunset time in Tokyo today."}]
+  }'
+
+echo -e "\n\nTesting streaming..."
+curl "https://api.ericxliu.me/v1/chat/completions" \
+  -H "Authorization: Bearer <LITELLM_MASTER_KEY>" \
+  -H "Content-Type: application/json" \
+  -d '{
+    "model": "gpt-5.2-search",
+    "stream": true,
+    "messages": [{"role": "user", "content": "What is the weather in NYC right now?"}]
+  }'
+

Each request now returns grounded answers with citations (url_citation annotations) via Open WebUI, and the SSE feed never stalls because the UI isn’t asked to interpret tool calls.

Lessons & Pitfalls + +Link to heading

  • The Responses API is non-negotiable (and syntax-sensitive). /v1/chat/completions still rejects web_search. Always test against /v1/responses directly before wiring LiteLLM into the loop. Furthermore, the syntax for reasoning is different: while Chat Completions uses the top-level reasoning_effort parameter, the Responses API requires a nested object: "reasoning": {"effort": "medium"}.
  • The Native Model Trap. Models like gpt-5-search-api exist and support web search via standard Chat Completions, but they are often less flexible—for instance, rejecting reasoning_effort entirely. Routing a standard model through LiteLLM’s Responses bridge offers more control over formatting and fallbacks.
  • Magic strings control routing. LiteLLM has hardcoded logic (deep in main.py) that only triggers the Responses-to-Chat bridge if the backend model name starts with openai/responses/. Without that specific prefix, LiteLLM bypasses its internal transformation layer entirely, leading to cryptic 404s or “model not found” errors.
  • Synthesized Sovereignty: The Call ID Crisis. Open WebUI is a “well-behaved” OpenAI client, yet it often omits the id field in tool_calls when sending assistant messages back to the server. LiteLLM’s Responses bridge initially exploded with a KeyError: 'id' because it assumed an ID would always be present. The fix: synthesizing predictable IDs like auto_tool_call_N on the fly to satisfy the server-side schema.
  • The Argument Delta Void. In streaming mode, the Responses API sometimes skips sending response.function_call_arguments.delta entirely if the query is simple. If the proxy only waits for deltas, the client receives an empty {} for tool arguments. The solution is to fallback and synthesize the arguments string from the action payload (e.g., output_item['action']['query']) when deltas are missing.
  • Streaming State Machines are Fragile. Open WebUI is highly sensitive to the exact state of a tool call. If it sees a web_search_call with status: "in_progress", its internal parser chokes, assuming it’s an uncompleted “function” call. These intermediate state chunks must be intercepted and handled before they reach the UI.
  • Defensive Masking is the Final Boss. To stop Open WebUI from entering an infinite client-side loop (thinking it needs to execute a tool it doesn’t have), LiteLLM must “mask” the web_search_call chunks. By emitting empty content deltas instead of tool chunks, we hide the server-side search mechanics from the UI, allowing it to stay focused on the final answer.

With those guardrails in place, GPT‑5’s native web search works end-to-end inside Open WebUI, complete with citations, without waiting for LiteLLM upstream fixes.

References + +Link to heading

\ 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 414e127..218c70f 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/posts/page/2/index.html b/posts/page/2/index.html index 4496555..5544597 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 +[f1178d3] \ 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 ee9aebe..0318805 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/posts/quantization-in-llms/index.html b/posts/quantization-in-llms/index.html index 1817fd2..64198d5 100644 --- a/posts/quantization-in-llms/index.html +++ b/posts/quantization-in-llms/index.html @@ -7,4 +7,4 @@ 2016 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 fff512e..d14b3cf 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/posts/supabase-deep-dive/index.html b/posts/supabase-deep-dive/index.html index aa43f6e..62dd207 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 1a9d4b5..6f3830d 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 cde90bd..09d1d39 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[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 71c48f5..f70f9d1 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 46dd06c..f548c42 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ 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 0aeb3fc..9712467 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/posts/useful/index.html b/posts/useful/index.html index 06bee1a..e3044fb 100644 --- a/posts/useful/index.html +++ b/posts/useful/index.html @@ -9,4 +9,4 @@ One-minute read
    • [e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/posts/vattention/index.html b/posts/vattention/index.html index edc707d..98ada2d 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 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/series/index.html b/series/index.html index 9aa03dd..845887e 100644 --- a/series/index.html +++ b/series/index.html @@ -4,4 +4,4 @@ 2016 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 393ee46..d3e0bdf 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://ericxliu.me/2025-12-28T21:21:42+00:00weekly0.5https://ericxliu.me/posts/technical-deep-dive-llm-categorization/2025-12-27T22:05:12+00:00weekly0.5https://ericxliu.me/posts/2025-12-28T21:21:42+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/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 diff --git a/tags/index.html b/tags/index.html index 64df2d4..ebb0c9b 100644 --- a/tags/index.html +++ b/tags/index.html @@ -4,4 +4,4 @@ 2016 - 2025 Eric X. Liu -[e9dfd96] \ No newline at end of file +[f1178d3] \ No newline at end of file