diff --git a/blog/hami-at-kubecon-eu-2026/index.md b/blog/hami-at-kubecon-eu-2026/index.md new file mode 100644 index 00000000..acdec16d --- /dev/null +++ b/blog/hami-at-kubecon-eu-2026/index.md @@ -0,0 +1,141 @@ +--- +title: "HAMi 即将亮相 KubeCon Europe 2026:构建 Kubernetes 中的 GPU 资源层" +date: "2026-03-19" +description: "HAMi 将在 KubeCon Europe 2026 的多项活动中亮相,包括 Project Pavilion 展台、技术分享、主舞台 Demo 等。作为 CNCF Sandbox 项目,HAMi 关注的 GPU 虚拟化、共享与调度问题,正在与 Kubernetes 生态中的 AI 基础设施议题发生越来越直接的交汇。" +tags: ["KubeCon", "GPU", "Kubernetes", "AI"] +authors: [hami_community] +--- + +下周,HAMi 将在 [KubeCon + CloudNativeCon Europe 2026](https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/) 的多项活动中亮相,包括 Project Pavilion 展台、技术分享、主舞台 Demo,以及会后 AI 相关活动。 + +作为 CNCF Sandbox 项目,HAMi 关注的 GPU 虚拟化、共享与调度问题,正在与 Kubernetes 生态中的 AI 基础设施议题发生越来越直接的交汇。KubeCon + CloudNativeCon Europe 2026 将于 3 月 23 日至 26 日在阿姆斯特丹举行,其中 3 月 23 日为 pre-event programming,3 月 24 日至 26 日为主会期。 + + + +![KubeCon EU 2026 吸引了 13,000 名参会者](/img/blog-hami-at-kubecon-eu-2026-kubecon.png) + +## 为什么这次 KubeCon 值得关注? + +如果把过去几年云原生社区的讨论放在一起看,会发现一个越来越清晰的变化:AI 正在从应用层问题,进入 Kubernetes 的资源层、调度层与控制层。 + +围绕 GPU 的讨论也不再停留在"设备可见性"或"驱动可用性",而是进一步延伸到共享、切分、利用率、多租户隔离,以及 AI workload 的调度语义等问题。 + +KubeCon Europe 2026 的官方议程中,keynote、AI 相关 session、Project Pavilion 与 co-located events 都体现出这一趋势。 + +在这个背景下,HAMi 所对应的问题空间也变得更加明确:不是简单地"让 Kubernetes 能识别 GPU",而是让 GPU 进一步成为一种可以被抽象、被共享、被调度的资源层能力。 + +这也是为什么本次 KubeCon 对 HAMi 社区而言,不只是一次项目展示,更是一次和更大范围云原生生态对话的机会。 + +## 在 KubeCon 现场,如何找到 HAMi? + +![欢迎来到 HAMi 展台](/img/blog-hami-at-kubecon-eu-2026-booth.png) + +HAMi 将在 Project Pavilion 设置展台,方便与社区成员、用户和维护者进行现场交流。 + +- **Booth**:**P-13B** +- **时间**: + - **3 月 24 日(周二)15:10–19:00** + - **3 月 26 日(周四)12:30–14:00** + +如果你会到现场,欢迎来到 HAMi Booth,一起交流这些话题: + +- Kubernetes 中的 GPU 虚拟化与共享 +- AI workload 的资源调度与利用率优化 +- 多租户 GPU 资源管理 +- HAMi 与 [Volcano](https://volcano.sh/)、[Kueue](https://kueue.sigs.k8s.io/)、[vLLM](https://github.com/vllm-project/vllm) 等生态项目的协同 + +Project Pavilion 是 KubeCon 主展区中的项目展示区域,面向社区项目、维护者与开发者交流。 + +## HAMi @ KubeCon Europe 2026 活动一览 + +### 1. Opening Keynote + +- **时间**:3 月 24 日 09:00–09:35 +- **地点**:Hall 12 +- **讲者**:Jonathan Bryce (Linux Foundation Executive Director) & Chris Aniszczyk (CNCF CTO) +- **议程**:[Keynote: Welcome + Opening Remarks](https://kccnceu2026.sched.com/event/2CtKk/keynote-welcome-+-opening-remarks-jonathan-bryce-executive-director-cloud-and-infrastructure-linux-foundation-chris-aniszczyk-cto-cloud-and-infrastructure-linux-foundation?iframe=no) + +本次开幕 keynote 由 Linux Foundation 与 CNCF 相关负责人带来。 + +对于关注 AI 基础设施方向的社区成员来说,keynote 本身就是一个观察窗口:云原生主叙事是否正在吸纳更多 AI、GPU 与资源管理相关议题。 + +### 2. HAMi 技术分享(Lightning Talks) + +#### GPU Sharing in Kubernetes + +- **时间**:3 月 23 日 17:15–17:25 +- **地点**:Hall 7 · Room B +- **讲者**:张潇(「Dynamia 密瓜智能」CEO,HAMi Maintainer) +- **议程**:[K8s Issue #52757: Sharing GPUs Among Multiple Containers](https://colocatedeventseu2026.sched.com/event/2DY9v/cllightning-talk-k8s-issue-?iframe=yes&w=100%&sidebar=yes&bg=no#52757-sharing-gpus-among-multiple-containers-xiao-zhang-dynamiaai) + +这场 lightning talk 会从 Kubernetes 社区长期存在的 GPU 共享问题出发,讨论多容器共享 GPU 的背景、挑战与相关实现路径。 + +#### HAMi 项目技术解读 + +- **时间**:3 月 23 日 14:43–14:48 +- **地点**:Elicium 2 +- **讲者**:李孟轩(「Dynamia 密瓜智能」CTO,HAMi Maintainer) +- **议程**:[HAMi: Dynamic, Smart, Stable GPU-Sharing Middleware in Kubernetes](https://kccnceu2026.sched.com/event/2EFyZ/project-lightning-talk-hami-dynamic-smart-stable-gpu-sharing-middleware-in-kubernetes-mengxuan-li-maintainer?iframe=yes&w=100%&sidebar=yes&bg=no) + +这场分享会聚焦 HAMi 的核心架构与能力,包括 GPU 虚拟化、共享与调度机制,以及项目在稳定性与生产可用性上的设计思路。 + +### 3. Maintainer Summit + +- **时间**:3 月 22 日 +- **信息**:[Maintainer Summit](https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/features-add-ons/maintainer-summit/) + +HAMi 也将参与 KubeCon 期间的 Maintainer Summit,并围绕 **Insights on AI Workloads** 与维护者群体展开交流。 + +Maintainer Summit 是 KubeCon 主会前一天举行的维护者活动,聚焦上游协作、SIG/WG 话题与项目间讨论。 + +对 HAMi 来说,这也是一个把 GPU 资源管理与 AI workload 问题带入更广泛维护者语境的重要场景。Maintainer Summit 确认于 3 月 22 日在 RAI Amsterdam 举行。 + +### 4. Poster Session + +- **时间**:3 月 25 日 13:15–14:15 +- **地点**:Hall 1–5 · Gouda Zone · Poster Pavilion +- **讲者**:Satyam Soni (Devtron) & Rudraksh Karpe (ZS Associates) +- **议程**:[Kubernetes as the Universal GPU Control Plane for AI Workloads](https://kccnceu2026.sched.com/event/2CW0q/poster-session-kubernetes-as-the-universal-gpu-control-plane-for-ai-workloads-satyam-soni-devtronai-rudraksh-karpe-zs-associates-inc?iframe=yes&w=100%&sidebar=yes&bg=no) + +这场 poster session 从更生态化的角度讨论 Kubernetes 作为 GPU control plane 的可能性,这一方向与 HAMi 长期关注的问题高度相关。 + +### 5. 主舞台 Demo + +- **时间**:3 月 26 日 10:03–10:18 +- **地点**:Hall 12 +- **讲者**:李孟轩(「Dynamia 密瓜智能」CTO,HAMi Maintainer),Reza Jelveh(「Dynamia 密瓜智能」Head of Global Market & Solution Engineer) + +KubeCon 期间的主舞台 Demo 将展示 GPU 共享与调度在 Kubernetes 中的实际运行方式。相比常规 PPT 分享,这类 Demo 更适合直观理解从资源抽象到系统落地的完整链路。 + +### 6. AI Native Summit + +- **时间**:3 月 27 日 09:00–16:00 +- **地点**:Van der Valk Hotel Amsterdam – Zuidas +- **议程**:[AI Native Summit Hosted by ETSI ISG NFV](https://kccnceu2026.sched.com/event/2HKYM/ai-native-summit-hosted-by-etsi-isg-nfv-separate-registration-required?iframe=no) + +在主会结束后,AI Native Summit 也值得关注。该活动更适合从系统层面讨论 AI 基础设施中的资源层、控制层,以及 Kubernetes 在其中的角色。 + +## 除了 HAMi,还可以关注哪些议题? + +如果你会参加本届 KubeCon,除了 HAMi 相关活动,也建议重点关注以下方向: + +- Device Management / DRA +- AI workload scheduling +- GPU observability +- inference platform 与 AI reference stack +- GPU 共享与资源抽象 + +这些议题虽然分散在不同会场,但共同指向一个问题:**Kubernetes 如何在 AI 时代具备更强的资源管理与调度能力。** + +## 社区动态与后续内容 + +大会期间,HAMi 社区也会持续整理和发布相关内容,包括技术分享要点、现场展示以及对 AI 基础设施趋势的观察。 + +欢迎关注: + +- [HAMi GitHub 仓库](https://github.com/project-hami/hami) +- [HAMi 社区官网](https://project-hami.io) + +如果你也会在阿姆斯特丹,欢迎来 Project Pavilion 找到我们。 + +`📍 HAMi Booth:P-13B` diff --git a/docusaurus.config.js b/docusaurus.config.js index 582de5be..5e4d014b 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -31,6 +31,7 @@ module.exports = { organizationName: "hami-io", projectName: "website", favicon: "img/logo.svg", + clientModules: [require.resolve('./src/client/imageFigureNumber.js')], i18n: { defaultLocale: defaultLocale, locales: ["en", "zh"], diff --git a/i18n/en/docusaurus-plugin-content-blog/hami-at-kubecon-eu-2026/index.md b/i18n/en/docusaurus-plugin-content-blog/hami-at-kubecon-eu-2026/index.md new file mode 100644 index 00000000..a378e3ea --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-blog/hami-at-kubecon-eu-2026/index.md @@ -0,0 +1,141 @@ +--- +title: "HAMi at KubeCon Europe 2026: Building the GPU Resource Layer in Kubernetes" +date: "2026-03-19" +description: "HAMi will be featured in multiple activities at KubeCon Europe 2026, including Project Pavilion booth, technical sessions, main stage demo, and post-conference AI events. As a CNCF Sandbox project, HAMi focuses on GPU virtualization, sharing, and scheduling, which is increasingly intersecting with AI infrastructure topics in the Kubernetes ecosystem." +tags: ["KubeCon", "GPU", "Kubernetes", "AI"] +authors: [hami_community] +--- + +Next week, HAMi will be featured in multiple activities at [KubeCon + CloudNativeCon Europe 2026](https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/), including Project Pavilion booth, technical sessions, main stage demo, and post-conference AI-related events. + +As a CNCF Sandbox project, HAMi focuses on GPU virtualization, sharing, and scheduling, which is increasingly intersecting with AI infrastructure topics in the Kubernetes ecosystem. KubeCon + CloudNativeCon Europe 2026 will be held in Amsterdam from March 23-26, with March 23 as pre-event programming and March 24-26 as the main conference. + + + +![KubeCon EU 2026 attracts 13,000 attendees](/img/blog-hami-at-kubecon-eu-2026-kubecon.png) + +## Why This KubeCon Matters + +Looking at the cloud native community discussions over the past few years, a clear trend emerges: AI is moving from the application layer into Kubernetes' resource layer, scheduling layer, and control layer. + +The discussions around GPUs are no longer limited to "device visibility" or "driver availability," but have extended to sharing, partitioning, utilization, multi-tenant isolation, and AI workload scheduling semantics. + +The official agenda of KubeCon Europe 2026 reflects this trend across keynotes, AI-related sessions, Project Pavilion, and co-located events. + +In this context, HAMi's problem space becomes clearer: it's not simply about "making Kubernetes recognize GPUs," but making GPUs a resource layer capability that can be abstracted, shared, and scheduled. + +This is why this KubeCon is more than just a project showcase for the HAMi community—it's an opportunity to engage with the broader cloud native ecosystem. + +## Finding HAMi at KubeCon + +![Welcome to HAMi Booth](/img/blog-hami-at-kubecon-eu-2026-booth.png) + +HAMi will have a booth at Project Pavilion for in-person exchanges with community members, users, and maintainers. + +- **Booth**: **P-13B** +- **Times**: + - **March 24 (Tuesday) 15:10–19:00** + - **March 26 (Thursday) 12:30–14:00** + +If you're attending, stop by the HAMi Booth to discuss: + +- GPU virtualization and sharing in Kubernetes +- Resource scheduling and utilization optimization for AI workloads +- Multi-tenant GPU resource management +- HAMi's integration with ecosystem projects like [Volcano](https://volcano.sh/), [Kueue](https://kueue.sigs.k8s.io/), [vLLM](https://github.com/vllm-project/vllm), and others + +Project Pavilion is the project showcase area within the main KubeCon exhibition, designed for community projects, maintainers, and developers to connect. + +## HAMi @ KubeCon Europe 2026 Event Overview + +### 1. Opening Keynote + +- **Time**: March 24, 09:00–09:35 +- **Location**: Hall 12 +- **Speakers**: Jonathan Bryce (Linux Foundation Executive Director) & Chris Aniszczyk (CNCF CTO) +- **Agenda**: [Keynote: Welcome + Opening Remarks](https://kccnceu2026.sched.com/event/2CtKk/keynote-welcome-+-opening-remarks-jonathan-bryce-executive-director-cloud-and-infrastructure-linux-foundation-chris-aniszczyk-cto-cloud-and-infrastructure-linux-foundation?iframe=no) + +This opening keynote will be delivered by leadership from Linux Foundation and CNCF. + +For community members focused on AI infrastructure, the keynote serves as an observation window: Is the main cloud native narrative embracing more AI, GPU, and resource management topics? + +### 2. HAMi Technical Sessions (Lightning Talks) + +#### GPU Sharing in Kubernetes + +- **Time**: March 23, 17:15–17:25 +- **Location**: Hall 7 · Room B +- **Speaker**: Xiao Zhang (CEO, Dynamia, HAMi Maintainer) +- **Agenda**: [K8s Issue #52757: Sharing GPUs Among Multiple Containers](https://colocatedeventseu2026.sched.com/event/2DY9v/cllightning-talk-k8s-issue-?iframe=yes&w=100%&sidebar=yes&bg=no#52757-sharing-gpus-among-multiple-containers-xiao-zhang-dynamiaai) + +This lightning talk will address Kubernetes' long-standing GPU sharing problem, discussing the background, challenges, and implementation paths for multi-container GPU sharing. + +#### HAMi Project Technical Deep Dive + +- **Time**: March 23, 14:43–14:48 +- **Location**: Elicium 2 +- **Speaker**: Mengxuan Li (CTO, Dynamia, HAMi Maintainer) +- **Agenda**: [HAMi: Dynamic, Smart, Stable GPU-Sharing Middleware in Kubernetes](https://kccnceu2026.sched.com/event/2EFyZ/project-lightning-talk-hami-dynamic-smart-stable-gpu-sharing-middleware-in-kubernetes-mengxuan-li-maintainer?iframe=yes&w=100%&sidebar=yes&bg=no) + +This session will focus on HAMi's core architecture and capabilities, including GPU virtualization, sharing and scheduling mechanisms, and the project's design philosophy around stability and production readiness. + +### 3. Maintainer Summit + +- **Time**: March 22 +- **Information**: [Maintainer Summit](https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/features-add-ons/maintainer-summit/) + +HAMi will also participate in the KubeCon Maintainer Summit, engaging with maintainers around **Insights on AI Workloads**. + +The Maintainer Summit is a maintainer-focused event held the day before the main conference, focusing on upstream collaboration, SIG/WG topics, and inter-project discussions. + +For HAMi, this is an important venue to bring GPU resource management and AI workload topics into a broader maintainer context. The Maintainer Summit is confirmed for March 22 at RAI Amsterdam. + +### 4. Poster Session + +- **Time**: March 25, 13:15–14:15 +- **Location**: Hall 1–5 · Gouda Zone · Poster Pavilion +- **Speakers**: Satyam Soni (Devtron) & Rudraksh Karpe (ZS Associates) +- **Agenda**: [Kubernetes as the Universal GPU Control Plane for AI Workloads](https://kccnceu2026.sched.com/event/2CW0q/poster-session-kubernetes-as-the-universal-gpu-control-plane-for-ai-workloads-satyam-soni-devtronai-rudraksh-karpe-zs-associates-inc?iframe=yes&w=100%&sidebar=yes&bg=no) + +This poster session discusses the potential of Kubernetes as a GPU control plane from an ecosystem perspective—a direction highly relevant to HAMi's long-term focus. + +### 5. Main Stage Demo + +- **Time**: March 26, 10:03–10:18 +- **Location**: Hall 12 +- **Speakers**: Mengxuan Li (CTO, Dynamia, HAMi Maintainer), Reza Jelveh (Head of Global Market & Solution Engineer, Dynamia) + +The main stage demo during KubeCon will showcase GPU sharing and scheduling in action within Kubernetes. Compared to traditional slide presentations, this demo provides a more intuitive understanding of the complete chain from resource abstraction to system implementation. + +### 6. AI Native Summit + +- **Time**: March 27, 09:00–16:00 +- **Location**: Van der Valk Hotel Amsterdam – Zuidas +- **Agenda**: [AI Native Summit Hosted by ETSI ISG NFV](https://kccnceu2026.sched.com/event/2HKYM/ai-native-summit-hosted-by-etsi-isg-nfv-separate-registration-required?iframe=no) + +After the main conference, the AI Native Summit is also worth attention. This event is better suited for system-level discussions of the resource layer and control layer in AI infrastructure, and Kubernetes' role within them. + +## Beyond HAMi: Other Topics to Follow + +If you're attending this KubeCon, in addition to HAMi-related activities, we recommend focusing on these areas: + +- Device Management / DRA +- AI workload scheduling +- GPU observability +- Inference platforms and AI reference stacks +- GPU sharing and resource abstraction + +While these topics are spread across different venues, they all point to one question: **How can Kubernetes gain stronger resource management and scheduling capabilities in the AI era?** + +## Community Updates and Follow-up Content + +During the conference, the HAMi community will continue to curate and publish related content, including technical session highlights, on-site demonstrations, and observations on AI infrastructure trends. + +Stay connected: + +- [HAMi GitHub Repository](https://github.com/project-hami/hami) +- [HAMi Community Website](https://project-hami.io) + +If you'll be in Amsterdam, come find us at Project Pavilion. + +`📍 HAMi Booth: P-13B` diff --git a/src/client/imageFigureNumber.js b/src/client/imageFigureNumber.js new file mode 100644 index 00000000..73c02a39 --- /dev/null +++ b/src/client/imageFigureNumber.js @@ -0,0 +1,113 @@ +/** + * Client module to automatically add figure numbers and captions to images + * based on their alt text in blog posts and docs. + */ +export function onRouteDidUpdate({ location, previousLocation }) { + // Only run on blog and doc pages + if (!location.pathname.match(/\/blog\//) && !location.pathname.match(/\/docs\//)) { + return; + } + + // Wait for DOM to be ready with multiple attempts + setTimeout(() => addFigureNumbers(), 100); + setTimeout(() => addFigureNumbers(), 500); + setTimeout(() => addFigureNumbers(), 1000); +} + +function addFigureNumbers() { + // Find all images in markdown content + const articleContent = document.querySelector('article'); + if (!articleContent) { + console.log('[ImageFigureNumber] No article content found'); + return; + } + + // Find all images that are not in header or footer + const images = Array.from(articleContent.querySelectorAll('img')).filter(img => { + // Filter out logos, avatars, icons + const parentClass = img.parentElement?.className || ''; + const isLogo = parentClass.includes('logo') || img.alt.includes('logo'); + const isIcon = img.width < 100 || img.height < 100; + return !isLogo && !isIcon; + }); + + console.log(`[ImageFigureNumber] Found ${images.length} images`); + + let figureCount = 0; + + images.forEach((img) => { + // Get alt text + const altText = img.getAttribute('alt') || ''; + if (!altText.trim()) { + console.log('[ImageFigureNumber] Skipping image with no alt text'); + return; + } + + // Check if already has figcaption with figure number + const existingFigure = img.closest('figure'); + if (existingFigure) { + const existingFigcaption = existingFigure.querySelector('figcaption'); + if (existingFigcaption && existingFigcaption.textContent.match(/^[图Figure]\d+:/)) { + console.log('[ImageFigureNumber] Image already has figure caption, skipping'); + figureCount++; + return; + } + } + + // Increment counter + figureCount++; + console.log(`[ImageFigureNumber] Processing figure ${figureCount}: ${altText}`); + + // Create figure wrapper if it doesn't exist + let figure = img.closest('figure'); + if (!figure) { + figure = document.createElement('figure'); + img.parentNode.insertBefore(figure, img); + figure.appendChild(img); + } + + // Remove existing figcaption if any (but only if it doesn't have figure number) + const existingFigcaption = figure.querySelector('figcaption'); + if (existingFigcaption && !existingFigcaption.textContent.match(/^[图Figure]\d+:/)) { + existingFigcaption.remove(); + } else if (existingFigcaption) { + // Update existing figcaption with figure number + const currentLang = document.documentElement.lang || 'en'; + const prefix = currentLang.startsWith('zh') ? '图' : 'Figure'; + existingFigcaption.textContent = `${prefix}${figureCount}: ${altText}`; + return; + } + + // Create figcaption with number and alt text + const figcaption = document.createElement('figcaption'); + const currentLang = document.documentElement.lang || 'en'; + + // Use appropriate prefix based on language + const prefix = currentLang.startsWith('zh') ? '图' : 'Figure'; + figcaption.textContent = `${prefix}${figureCount}: ${altText}`; + + // Append figcaption to figure + figure.appendChild(figcaption); + + // Add styling class + figure.style.cssText = ` + margin: 2em 0; + text-align: center; + `; + + img.style.cssText = ` + max-width: 100%; + height: auto; + border-radius: 8px; + `; + + figcaption.style.cssText = ` + margin-top: 0.8em; + font-size: 0.9em; + color: var(--ifm-color-emphasis-600); + font-style: italic; + `; + + console.log(`[ImageFigureNumber] Added caption: ${figcaption.textContent}`); + }); +} diff --git a/src/components/caseStudiesList.js b/src/components/caseStudiesList.js index 48ba3a01..1757eacb 100644 --- a/src/components/caseStudiesList.js +++ b/src/components/caseStudiesList.js @@ -13,9 +13,11 @@ const CaseStudiesList = () => { return (