feat: implement workflow to sync LMSYS SGLang blog (#23438)

This commit is contained in:
zijiexia
2026-04-30 16:17:29 -07:00
committed by GitHub
parent 918f910cf0
commit 8b23d32ec1
5 changed files with 118 additions and 191 deletions
+2
View File
@@ -21,8 +21,10 @@ documentation:
- changed-files:
- any-glob-to-any-file:
- '**/*.md'
- '**/*.mdx'
- 'docs/**/*'
- 'README*'
- 'docs_new/**/*'
# Dependencies
dependencies:
@@ -23,17 +23,18 @@ jobs:
- name: Sync blog cards
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: python scripts/update_lmsys_sglang_blogs.py
run: python docs_new/scripts/update_lmsys_sglang_blogs.py
- name: Commit and push changes
run: |
if git diff --quiet; then
echo "No changes to commit."
if git diff --quiet -- docs_new/index.mdx; then
echo "No blog card changes to commit."
exit 0
fi
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add index.mdx src/generated/lmsys_sglang_blogs.json
git add docs_new/index.mdx
git diff --cached --quiet && exit 0
git commit -m "docs: sync LMSYS SGLang blog cards"
git push
+110 -110
View File
@@ -82,6 +82,116 @@ It is designed to deliver low-latency and high-throughput inference across a wid
alignItems: "stretch",
}}
>
<a
href="https://lmsys.org/blog/2026-04-25-deepseek-v4/"
target="_blank"
rel="noopener noreferrer"
style={{
display: "block",
border: "1px solid rgba(128, 128, 128, 0.3)",
borderRadius: "0.75rem",
overflow: "hidden",
textDecoration: "none",
color: "inherit",
height: "100%",
}}
>
<div
style={{
aspectRatio: "16 / 9",
overflow: "hidden",
background: "rgba(128, 128, 128, 0.15)",
}}
>
<img
src="https://lmsys.org/images/blog/deepseek_v4/benchmark_vs_oss.png"
alt="DeepSeek-V4 on Day 0: From Fast Inference to Verified RL with SGLang and Miles"
style={{
width: "100%",
height: "100%",
objectFit: "cover",
objectPosition: "center",
display: "block",
}}
/>
</div>
<div style={{ padding: "0.9rem 1rem 1rem" }}>
<p
style={{
margin: 0,
fontWeight: 600,
lineHeight: 1.35,
fontSize: "0.98rem",
}}
>
{"DeepSeek-V4 on Day 0: From Fast Inference to Verified RL with SGLang and Miles"}
</p>
<p
style={{
margin: "0.55rem 0 0",
fontSize: "0.85rem",
opacity: 0.75,
}}
>
{"April 25, 2026"}
</p>
</div>
</a>
<a
href="https://lmsys.org/blog/2026-04-10-sglang-hisparse/"
target="_blank"
rel="noopener noreferrer"
style={{
display: "block",
border: "1px solid rgba(128, 128, 128, 0.3)",
borderRadius: "0.75rem",
overflow: "hidden",
textDecoration: "none",
color: "inherit",
height: "100%",
}}
>
<div
style={{
aspectRatio: "16 / 9",
overflow: "hidden",
background: "rgba(128, 128, 128, 0.15)",
}}
>
<img
src="https://lmsys.org/images/blog/hisparse/hisparse_overview.png"
alt="HiSparse: Turbocharging Sparse Attention with Hierarchical Memory"
style={{
width: "100%",
height: "100%",
objectFit: "cover",
objectPosition: "center",
display: "block",
}}
/>
</div>
<div style={{ padding: "0.9rem 1rem 1rem" }}>
<p
style={{
margin: 0,
fontWeight: 600,
lineHeight: 1.35,
fontSize: "0.98rem",
}}
>
{"HiSparse: Turbocharging Sparse Attention with Hierarchical Memory"}
</p>
<p
style={{
margin: "0.55rem 0 0",
fontSize: "0.85rem",
opacity: 0.75,
}}
>
{"April 10, 2026"}
</p>
</div>
</a>
<a
href="https://lmsys.org/blog/2026-03-25-gtc2026/"
target="_blank"
@@ -302,116 +412,6 @@ It is designed to deliver low-latency and high-throughput inference across a wid
</p>
</div>
</a>
<a
href="https://lmsys.org/blog/2026-02-20-gb300-inferencex/"
target="_blank"
rel="noopener noreferrer"
style={{
display: "block",
border: "1px solid rgba(128, 128, 128, 0.3)",
borderRadius: "0.75rem",
overflow: "hidden",
textDecoration: "none",
color: "inherit",
height: "100%",
}}
>
<div
style={{
aspectRatio: "16 / 9",
overflow: "hidden",
background: "rgba(128, 128, 128, 0.15)",
}}
>
<img
src="https://lmsys.org/images/blog/gb300_inferencex/img-1.png"
alt="Unlocking 25x Inference Performance with SGLang on NVIDIA GB300 NVL72"
style={{
width: "100%",
height: "100%",
objectFit: "cover",
objectPosition: "center",
display: "block",
}}
/>
</div>
<div style={{ padding: "0.9rem 1rem 1rem" }}>
<p
style={{
margin: 0,
fontWeight: 600,
lineHeight: 1.35,
fontSize: "0.98rem",
}}
>
{"Unlocking 25x Inference Performance with SGLang on NVIDIA GB300 NVL72"}
</p>
<p
style={{
margin: "0.55rem 0 0",
fontSize: "0.85rem",
opacity: 0.75,
}}
>
{"February 20, 2026"}
</p>
</div>
</a>
<a
href="https://lmsys.org/blog/2026-02-19-gb300-longctx/"
target="_blank"
rel="noopener noreferrer"
style={{
display: "block",
border: "1px solid rgba(128, 128, 128, 0.3)",
borderRadius: "0.75rem",
overflow: "hidden",
textDecoration: "none",
color: "inherit",
height: "100%",
}}
>
<div
style={{
aspectRatio: "16 / 9",
overflow: "hidden",
background: "rgba(128, 128, 128, 0.15)",
}}
>
<img
src="https://lmsys.org/images/blog/gb300_longctx/cover.png"
alt="Deploying DeepSeek on GB300 NVL72: Big Wins in Long-Context Inference"
style={{
width: "100%",
height: "100%",
objectFit: "cover",
objectPosition: "center",
display: "block",
}}
/>
</div>
<div style={{ padding: "0.9rem 1rem 1rem" }}>
<p
style={{
margin: 0,
fontWeight: 600,
lineHeight: 1.35,
fontSize: "0.98rem",
}}
>
{"Deploying DeepSeek on GB300 NVL72: Big Wins in Long-Context Inference"}
</p>
<p
style={{
margin: "0.55rem 0 0",
fontSize: "0.85rem",
opacity: 0.75,
}}
>
{"February 19, 2026"}
</p>
</div>
</a>
</div>
</div>
{/* END_LMSYS_SGLANG_BLOG_CARDS */}
+1 -18
View File
@@ -7,13 +7,11 @@ import json
import os
import re
import urllib.request
from dataclasses import asdict, dataclass
from datetime import datetime, timezone
from dataclasses import dataclass
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
INDEX_PATH = ROOT / "index.mdx"
OUTPUT_JSON_PATH = ROOT / "src" / "generated" / "lmsys_sglang_blogs.json"
START_MARKER = "{/* BEGIN_LMSYS_SGLANG_BLOG_CARDS */}"
END_MARKER = "{/* END_LMSYS_SGLANG_BLOG_CARDS */}"
@@ -256,20 +254,6 @@ def replace_generated_block(index_text: str, generated_cards: str) -> str:
return updated_text
def write_metadata(posts: list[BlogPost], total_blog_files: int) -> None:
OUTPUT_JSON_PATH.parent.mkdir(parents=True, exist_ok=True)
payload = {
"generatedAt": datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"),
"sourceRepo": "https://github.com/lm-sys/lm-sys.github.io/tree/main/blog",
"keywords": KEYWORDS,
"maxCards": MAX_CARDS,
"totalBlogFilesScanned": total_blog_files,
"cardsPublished": len(posts),
"posts": [asdict(post) for post in posts],
}
OUTPUT_JSON_PATH.write_text(json.dumps(payload, indent=2) + "\n", encoding="utf-8")
def main() -> None:
sources = download_blog_sources()
relevant_posts: list[BlogPost] = []
@@ -291,7 +275,6 @@ def main() -> None:
if updated_index != current_index:
INDEX_PATH.write_text(updated_index, encoding="utf-8")
write_metadata(posts=selected_posts, total_blog_files=len(sources))
print(
"Scanned "
f"{len(sources)} blog files, matched {len(relevant_posts)} posts, "
@@ -1,59 +0,0 @@
{
"generatedAt": "2026-04-07T00:14:40.777335Z",
"sourceRepo": "https://github.com/lm-sys/lm-sys.github.io/tree/main/blog",
"keywords": [
"sglang",
"sgl-project/sglang",
"sgl-kernel",
"sglang-jax",
"sgl diffusion",
"sglang diffusion"
],
"maxCards": 6,
"totalBlogFilesScanned": 80,
"cardsPublished": 6,
"posts": [
{
"slug": "2026-03-25-gtc2026",
"title": "Highlights of SGLang at NVIDIA GTC 2026",
"url": "https://lmsys.org/blog/2026-03-25-gtc2026/",
"image": "https://lmsys.org/images/blog/gtc2026/happyhour-crowd.jpg",
"date": "March 31, 2026"
},
{
"slug": "2026-03-25-eep-partial-failure-tolerance",
"title": "Elastic EP in SGLang: Achieving Partial Failure Tolerance for DeepSeek MoE Deployments",
"url": "https://lmsys.org/blog/2026-03-25-eep-partial-failure-tolerance/",
"image": "https://lmsys.org/images/blog/eep-partial-failure-tolerance/figure.png",
"date": "March 25, 2026"
},
{
"slug": "2026-03-17-rocm-miles-rl-amd",
"title": "ROCm Support for Miles: Large-Scale RL Post-Training on AMD Instinct\u2122 GPUs",
"url": "https://lmsys.org/blog/2026-03-17-rocm-miles-rl-amd/",
"image": "https://lmsys.org/images/blog/rocm_miles_rl/fig_1.png",
"date": "March 17, 2026"
},
{
"slug": "2026-03-11-run-nvidia-nemotron-3-super",
"title": "SGLang Adds Day-0 Support for NVIDIA Nemotron 3 Super for building High-Efficiency Multi-Agent Systems",
"url": "https://lmsys.org/blog/2026-03-11-run-nvidia-nemotron-3-super/",
"image": "https://lmsys.org/images/blog/nemotron-3-super/figure_1.svg",
"date": "March 11, 2026"
},
{
"slug": "2026-02-20-gb300-inferencex",
"title": "Unlocking 25x Inference Performance with SGLang on NVIDIA GB300 NVL72",
"url": "https://lmsys.org/blog/2026-02-20-gb300-inferencex/",
"image": "https://lmsys.org/images/blog/gb300_inferencex/img-1.png",
"date": "February 20, 2026"
},
{
"slug": "2026-02-19-gb300-longctx",
"title": "Deploying DeepSeek on GB300 NVL72: Big Wins in Long-Context Inference",
"url": "https://lmsys.org/blog/2026-02-19-gb300-longctx/",
"image": "https://lmsys.org/images/blog/gb300_longctx/cover.png",
"date": "February 19, 2026"
}
]
}