[NPU] [DOC] Rename NPU hardware to Ascend A2/A3 Series product (#39389)
This commit is contained in:
@@ -147,10 +147,10 @@ export const Deployment = ({ config, benchmarks }) => {
|
||||
{ id: "mi355x", label: "MI355X", vram: "288GB",
|
||||
multiNodeDockerFlags: [...AMD_RDMA_DOCKER_FLAGS] },
|
||||
],
|
||||
// Atlas 800I A3 (910C): 1 card = 2 dies, so --tp-size is 2× the card
|
||||
// Ascend A3 Series: 1 card = 2 dies, so --tp-size is 2× the card
|
||||
// count (32 cards -> --tp-size 64).
|
||||
npu: [
|
||||
{ id: "a3", label: "Atlas 800I A3", vram: "64GB/die" },
|
||||
{ id: "a3", label: "Ascend A3 Series", vram: "64GB/die" },
|
||||
],
|
||||
};
|
||||
|
||||
@@ -839,7 +839,7 @@ export const Deployment = ({ config, benchmarks }) => {
|
||||
: vendorOf(sel.hw) === "npu"
|
||||
? [
|
||||
// NPU: --privileged grants the davinci devices (16 dies on an
|
||||
// 8-card Atlas 800I A3 node); the host CANN driver/firmware/state
|
||||
// 8-card Ascend A3 Series node); the host CANN driver/firmware/state
|
||||
// must be mounted in.
|
||||
"docker run --privileged --shm-size=16g",
|
||||
" --device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3",
|
||||
|
||||
@@ -772,7 +772,7 @@ export const Playground = ({ config }) => {
|
||||
&& (!mmOpt.excludesStrategy || !mmOpt.excludesStrategy.includes(base.strategy));
|
||||
const backendIsMega = slotDisplay("backend") === "megamoe";
|
||||
// `ep.showWhen` (function of base) drops the whole EP select on bases
|
||||
// where EP is not a supported lever (e.g. the single-shape A3 recipe).
|
||||
// where EP is not a supported lever (e.g. the single-shape A3 Series recipe).
|
||||
const epShown = !!fc.ep
|
||||
&& !(typeof fc.ep.showWhen === "function" && !fc.ep.showWhen(base));
|
||||
return (
|
||||
|
||||
@@ -198,7 +198,7 @@ export const config = {
|
||||
disableReason: (s) => (s.hw === "a3" ? "Only Modelslim (W4A8) is supported on this recipe." : ""),
|
||||
},
|
||||
{
|
||||
// A3 only (NPU W4A8 checkpoint); hidden on the GPU recipes.
|
||||
// A3 Series only (NPU W4A8 checkpoint); hidden on the GPU recipes.
|
||||
id: "modelslim",
|
||||
label: "Modelslim (W4A8)",
|
||||
subtitle: "ModelScope NPU checkpoint",
|
||||
@@ -513,7 +513,7 @@ export const config = {
|
||||
]; },
|
||||
},
|
||||
{
|
||||
// A3 only: 64 ranks (4 nodes × 8 cards × 2 dies); hidden on the GPU recipes.
|
||||
// A3 Series only: 64 ranks (4 nodes × 8 cards × 2 dies); hidden on the GPU recipes.
|
||||
value: 64,
|
||||
hide: { hw: ["b300", "gb300", "b200", "gb200", "h200", "h100", "mi350x", "mi355x"] },
|
||||
},
|
||||
@@ -719,7 +719,7 @@ export const config = {
|
||||
// EAGLE --speculative-num-steps N (chain; topk>1 is a tree)
|
||||
// Only DSPARK is selectable today, so only its form is emitted.
|
||||
id: "proposedDraftTokens", title: "Proposed Draft Tokens",
|
||||
// The A3 recipe pins the shipped block size (7).
|
||||
// The A3 Series recipe pins the shipped block size (7).
|
||||
showWhen: (b) => b.spec === "dspark" && b.hw !== "a3",
|
||||
control: "slider",
|
||||
stripPrefixes: [
|
||||
@@ -743,7 +743,7 @@ export const config = {
|
||||
// Spec-only, so gate the row on DSPARK; every DSPARK recipe (except the PD
|
||||
// prefill role) turns it on in the base, so this row derives to On and
|
||||
// exists mainly as the opt-out.
|
||||
// Needs the Triton linear-attn decode backend (the K3 default); the A3
|
||||
// Needs the Triton linear-attn decode backend (the K3 default); the A3 Series
|
||||
// script never sets it.
|
||||
id: "replaySsm", title: "ReplaySSM (spec)",
|
||||
showWhen: (b) => b.spec === "dspark" && b.hw !== "a3",
|
||||
@@ -766,7 +766,7 @@ export const config = {
|
||||
// without --speculative-dspark-sps-table-path (every step still
|
||||
// verifies full width); fails fast with ReplaySSM or DCP > 1.
|
||||
id: "raggedVerify", title: "Ragged Verify Mode (spec)",
|
||||
// The A3 recipe pins static.
|
||||
// The A3 Series recipe pins static.
|
||||
showWhen: (b) => b.spec === "dspark" && b.hw !== "a3",
|
||||
stripEnv: ["SGLANG_RAGGED_VERIFY_MODE"],
|
||||
options: [
|
||||
|
||||
@@ -14,8 +14,8 @@ export const FluxDeployment = () => {
|
||||
{ id: 'mi355x', label: 'MI355X', default: false },
|
||||
{ id: 'mi325x', label: 'MI325X', default: false },
|
||||
{ id: 'mi300x', label: 'MI300X', default: false },
|
||||
{ id: 'a2', label: 'A2', default: false },
|
||||
{ id: 'a3', label: 'A3', default: false }
|
||||
{ id: 'a2', label: 'A2 Series', default: false },
|
||||
{ id: 'a3', label: 'A3 Series', default: false }
|
||||
]
|
||||
},
|
||||
version: {
|
||||
@@ -51,7 +51,7 @@ export const FluxDeployment = () => {
|
||||
}
|
||||
|
||||
if (hardware === 'a3') {
|
||||
return `#One A3 card has 2 npu chips
|
||||
return `#One A3 Series card has 2 npu chips
|
||||
sglang serve \\
|
||||
--tp-size 2 \\
|
||||
--model-path ${config.repoId} \\
|
||||
@@ -133,7 +133,7 @@ sglang serve \\
|
||||
|
||||
useEffect(() => {
|
||||
const isAscend = values.hardware === 'a2' || values.hardware === 'a3';
|
||||
const targetTabName = isAscend ? 'Ascend A3' : 'NVIDIA B200';
|
||||
const targetTabName = isAscend ? 'Ascend A3 Series' : 'NVIDIA B200';
|
||||
|
||||
const allTabs = document.querySelectorAll('button, [role="tab"]');
|
||||
allTabs.forEach((tab) => {
|
||||
|
||||
@@ -14,8 +14,8 @@ export const QwenImageDeployment = () => {
|
||||
{ id: 'mi300x', label: 'MI300X', default: false },
|
||||
{ id: 'mi325x', label: 'MI325X', default: false },
|
||||
{ id: 'mi355x', label: 'MI355X', default: false },
|
||||
{ id: 'a2', label: 'A2', default: false },
|
||||
{ id: 'a3', label: 'A3', default: false }
|
||||
{ id: 'a2', label: 'A2 Series', default: false },
|
||||
{ id: 'a3', label: 'A3 Series', default: false }
|
||||
]
|
||||
},
|
||||
precision: {
|
||||
@@ -42,7 +42,7 @@ export const QwenImageDeployment = () => {
|
||||
}
|
||||
|
||||
if (values.hardware === 'a3') {
|
||||
return `#One A3 card has 2 npu chips
|
||||
return `#One A3 Series card has 2 npu chips
|
||||
sglang serve \\
|
||||
--model-path Qwen/Qwen-Image \\
|
||||
--tp-size 1 \\
|
||||
@@ -131,8 +131,8 @@ sglang serve \\
|
||||
|
||||
useEffect(() => {
|
||||
let targetTabName = 'AMD MI300X';
|
||||
if (values.hardware === 'a2') targetTabName = 'Ascend A2';
|
||||
if (values.hardware === 'a3') targetTabName = 'Ascend A3';
|
||||
if (values.hardware === 'a2') targetTabName = 'Ascend A2 Series';
|
||||
if (values.hardware === 'a3') targetTabName = 'Ascend A3 Series';
|
||||
|
||||
const allTabs = document.querySelectorAll('button, [role="tab"]');
|
||||
|
||||
|
||||
@@ -47,8 +47,8 @@ export const Wan21Deployment = () => {
|
||||
{ id: 'mi300x', label: 'MI300X', default: false },
|
||||
{ id: 'mi325x', label: 'MI325X', default: false },
|
||||
{ id: 'mi355x', label: 'MI355X', default: false },
|
||||
{ id: 'a2', label: 'A2', default: false },
|
||||
{ id: 'a3', label: 'A3', default: false }
|
||||
{ id: 'a2', label: 'A2 Series', default: false },
|
||||
{ id: 'a3', label: 'A3 Series', default: false }
|
||||
],
|
||||
},
|
||||
task: {
|
||||
@@ -119,7 +119,7 @@ export const Wan21Deployment = () => {
|
||||
useEffect(() => {
|
||||
const isAscend = values.hardware === 'a2' || values.hardware === 'a3';
|
||||
|
||||
const targetTabName = isAscend ? 'Ascend A3' : 'NVIDIA B200';
|
||||
const targetTabName = isAscend ? 'Ascend A3 Series' : 'NVIDIA B200';
|
||||
|
||||
const allTabs = document.querySelectorAll('button, [role="tab"]');
|
||||
|
||||
@@ -182,7 +182,7 @@ export const Wan21Deployment = () => {
|
||||
|
||||
if (hardware === 'a2' || hardware === 'a3') {
|
||||
const comment = hardware === 'a3'
|
||||
? '#One A3 card has 2 npu chips\n'
|
||||
? '#One A3 Series card has 2 npu chips\n'
|
||||
: '';
|
||||
const isBestPractice = bestPractice === 'on';
|
||||
let command;
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
{ id: 'mi300x', label: 'MI300X', default: false },
|
||||
{ id: 'mi325x', label: 'MI325X', default: false },
|
||||
{ id: 'mi355x', label: 'MI355X', default: false },
|
||||
{ id: 'a2', label: 'A2', default: false },
|
||||
{ id: 'a3', label: 'A3', default: false }
|
||||
{ id: 'a2', label: 'A2 Series', default: false },
|
||||
{ id: 'a3', label: 'A3 Series', default: false }
|
||||
],
|
||||
},
|
||||
task: {
|
||||
@@ -90,7 +90,7 @@
|
||||
useEffect(() => {
|
||||
const isAscend = values.hardware === 'a2' || values.hardware === 'a3';
|
||||
|
||||
const targetTabName = isAscend ? 'Ascend A3' : 'NVIDIA B200';
|
||||
const targetTabName = isAscend ? 'Ascend A3 Series' : 'NVIDIA B200';
|
||||
|
||||
const allTabs = document.querySelectorAll('button, [role="tab"]');
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
if (hardware === 'a2' || hardware === 'a3') {
|
||||
const comment = hardware === 'a3'
|
||||
? '#One A3 card has 2 npu chips\n'
|
||||
? '#One A3 Series card has 2 npu chips\n'
|
||||
: '';
|
||||
const isBestPractice = bestPractice === 'on';
|
||||
let command;
|
||||
|
||||
@@ -13,8 +13,8 @@ export const ZImageTurboDeployment = () => {
|
||||
{ id: 'b200', label: 'B200', default: true },
|
||||
{ id: 'h200', label: 'H200', default: false },
|
||||
{ id: 'h100', label: 'H100', default: false },
|
||||
{ id: 'a2', label: 'A2', default: false },
|
||||
{ id: 'a3', label: 'A3', default: false }
|
||||
{ id: 'a2', label: 'A2 Series', default: false },
|
||||
{ id: 'a3', label: 'A3 Series', default: false }
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -29,7 +29,7 @@ export const ZImageTurboDeployment = () => {
|
||||
}
|
||||
|
||||
if (hardware === 'a3') {
|
||||
return `#One A3 card has 2 npu chips
|
||||
return `#One A3 Series card has 2 npu chips
|
||||
sglang serve \\
|
||||
--model-path Tongyi-MAI/Z-Image-Turbo \\
|
||||
--tp-size 2 \\
|
||||
@@ -112,7 +112,7 @@ sglang serve \\
|
||||
|
||||
useEffect(() => {
|
||||
const isAscend = values.hardware === 'a2' || values.hardware === 'a3';
|
||||
const targetTabName = isAscend ? 'Ascend A2 / A3' : 'AMD MI300X';
|
||||
const targetTabName = isAscend ? 'Ascend A2/A3 Series' : 'AMD MI300X';
|
||||
|
||||
const allTabs = document.querySelectorAll('button, [role="tab"]');
|
||||
allTabs.forEach((tab) => {
|
||||
|
||||
Reference in New Issue
Block a user