XportL
GPU fabric tools: NCCL benchmark analysis, degradation cost, cluster compatibility, XportL facts.
我该使用它吗
质量与安全性
发现(1)
- LOW在 calculate_fabric_degradation_cost 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"xportl": {
"url": "https://xportl.io/mcp"
}
}
}远程端点
https://xportl.io/mcpstreamable-http它能做什么
工具清单
工具(6)
🟢get_xportl_overview(topic)
Returns cite-ready facts about XportL from xportl.io: what it does, the problem it solves, the seven failure classes it detects, how it collects telemetry and acts, supported fabrics/GPUs/collectives/kernels, use cases, FAQ, company details (parent company, stage, NVIDIA Inception, contacts) and links to the engineering guides on xportl.io.
输入模式
{
"type": "object",
"properties": {
"topic": {
"default": "all",
"description": "Section to return. Default 'all'.",
"type": "string",
"enum": [
"all",
"product",
"architecture",
"supported_environments",
"use_cases",
"faq",
"company",
"guides"
]
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢analyze_nccl_benchmark(raw_output, results, collective, fabric, link_gbps, ...)
Analyzes nccl-tests / rccl-tests results (paste raw all_reduce_perf output, or give size/busbw points). Detects node and GPU counts from the output, compares large-message bus bandwidth with the fabric's NIC line rate (InfiniBand HDR/NDR/XDR, RoCE 100G to 800G), and flags data errors, degraded bandwidth, dips as message size grows and unstable run-to-run results, with likely causes. Returns a health status and a bandwidth-loss figure for calculate_fabric_degradation_cost.
输入模式
{
"type": "object",
"properties": {
"raw_output": {
"description": "Raw stdout of an nccl-tests or rccl-tests run (e.g. all_reduce_perf -b 8 -e 8G -f 2 -g 1). Paste it unchanged; rank/host lines are used to detect node count.",
"type": "string",
"maxLength": 200000
},
"results": {
"description": "Alternative to raw_output: measured points as {size_bytes, busbw_gbs}.",
"maxItems": 200,
"type": "array",
"items": {
"type": "object",
"properties": {
"size_bytes": {
"type": "number",
"minimum": 1
},
"busbw_gbs": {
"type": "number",
"minimum": 0,
"description": "Bus bandwidth in GB/s, as nccl-tests reports it."
}
},
"required": [
"size_bytes",
"busbw_gbs"
]
}
},
"collective": {
"default": "all_reduce",
"description": "Collective that was benchmarked. Default all_reduce.",
"type": "string",
"enum": [
"all_reduce",
"all_gather",
"reduce_scatter",
"alltoall",
"broadcast",
"reduce",
"sendrecv"
]
},
"fabric": {
"default": "infiniband_ndr",
"description": "Inter-node fabric and per-port speed. Use 'other' with link_gbps for anything else.",
"type": "string",
"enum": [
"infiniband_hdr",
"infiniband_ndr",
"infiniband_xdr",
"roce_100g",
"roce_200g",
"roce_400g",
"roce_800g",
"other"
]
},
"link_gbps": {
"description": "Per-NIC link speed in Gb/s. Overrides the speed implied by fabric.",
"type": "number",
"minimum": 1,
"maximum": 3200
},
"nodes": {
"description": "Number of nodes in the run. Detected from raw_output when omitted.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"gpus_per_node": {
"description": "GPUs per node. Detected from raw_output when omitted; default 8.",
"type": "integer",
"minimum": 1,
"maximum": 72
},
"nics_per_node": {
"description": "Compute-fabric NICs per node (rails). Default: one per GPU.",
"type": "integer",
"minimum": 1,
"maximum": 32
},
"expected_busbw_gbs": {
"description": "Expected healthy bus bandwidth in GB/s, e.g. from an acceptance test. Overrides the line-rate reference; required to judge single-node runs.",
"type": "number",
"minimum": 0.1
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢calculate_fabric_degradation_cost(gpu_count, gpu_model, gpu_hour_cost_usd, utilization_pct, comm_share_pct, ...)
Estimates what silent fabric degradation (slow NCCL collectives, flapping links, congestion) costs a GPU cluster: throughput lost, GPU-hours and dollars per year, idle-GPU equivalent, cost per degraded hour, extra days on a training run, and the value of a recovery scenario with a conservative case and a sensitivity table. All assumptions are inputs with stated defaults.
输入模式
{
"type": "object",
"properties": {
"gpu_count": {
"type": "integer",
"minimum": 1,
"maximum": 2000000,
"description": "Total GPUs in the cluster (or in the jobs being analyzed)."
},
"gpu_model": {
"default": "h100",
"description": "GPU model, used only to pick a default cost per GPU-hour when gpu_hour_cost_usd is not given.",
"type": "string",
"enum": [
"a100",
"h100",
"h200",
"b200",
"gb200",
"mi300x",
"other"
]
},
"gpu_hour_cost_usd": {
"description": "Actual fully-loaded cost per GPU-hour in USD (amortized hardware + power + facility, or cloud rate). Strongly preferred over the default.",
"type": "number",
"minimum": 0.05,
"maximum": 100
},
"utilization_pct": {
"default": 80,
"description": "Share of hours the GPUs are running distributed jobs. Default 80.",
"type": "number",
"minimum": 1,
"maximum": 100
},
"comm_share_pct": {
"default": 25,
"description": "Share of a healthy training step spent in collective communication that is NOT overlapped with compute. Typically 10 to 40% for large-scale training. Default 25.",
"type": "number",
"minimum": 1,
"maximum": 90
},
"degraded_time_pct": {
"default": 10,
"description": "Share of running time the fabric is degraded (flapping links, congestion, bad cables/optics, misrouted paths). Default 10.",
"type": "number",
"minimum": 0,
"maximum": 100
},
"bandwidth_loss_pct": {
"default": 40,
"description": "Collective bus bandwidth lost while degraded, vs. healthy. Measure with nccl-tests (see analyze_nccl_benchmark). Default 40.",
"type": "number",
"minimum": 1,
"maximum": 90
},
"recovery_pct": {
"default": 25,
"description": "Recovery scenario: share of the degradation-induced throughput loss you expect to recover by detecting and acting on degradation sooner. A planning assumption, not a measured XportL result. Default 25.",
"type": "number",
"minimum": 0,
"maximum": 100
},
"training_run_days": {
"description": "Optional: planned wall-clock length of one training run on this cluster, to show how many days degradation adds to it.",
"type": "number",
"minimum": 0.1,
"maximum": 3650
}
},
"required": [
"gpu_count"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢check_cluster_compatibility(fabrics, gpu_vendor, collective_library, linux_kernel, host_os, ...)
Checks a GPU cluster against XportL's published support matrix (Linux 5.8+ for eBPF, InfiniBand / RoCE v2 / NVLink, NVIDIA and AMD GPUs, NCCL / RCCL, on-prem / cloud / hybrid, host access for the eBPF agent). Returns a verdict (good fit / needs review / not ready), each check, and next steps. Anything not on the published list is reported as 'review', never as supported.
输入模式
{
"type": "object",
"properties": {
"fabrics": {
"minItems": 1,
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"enum": [
"infiniband",
"roce_v2",
"nvlink",
"ethernet_tcp",
"omni_path",
"slingshot",
"efa",
"other"
]
},
"description": "Every interconnect the GPU jobs use, e.g. ['infiniband','nvlink']. efa = AWS Elastic Fabric Adapter."
},
"gpu_vendor": {
"type": "string",
"enum": [
"nvidia",
"amd",
"intel",
"other"
],
"description": "GPU vendor."
},
"collective_library": {
"default": [
"nccl"
],
"description": "Collective communication libraries in use. Default ['nccl'].",
"minItems": 1,
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"enum": [
"nccl",
"rccl",
"oneccl",
"gloo",
"mpi_only",
"other"
]
}
},
"linux_kernel": {
"description": "Host kernel version as printed by `uname -r`, e.g. '5.15.0-105-generic'. Leave empty for non-Linux hosts or if unknown.",
"type": "string",
"maxLength": 80
},
"host_os": {
"default": "linux",
"description": "Host operating system on the GPU nodes.",
"type": "string",
"enum": [
"linux",
"windows",
"other"
]
},
"deployment": {
"type": "string",
"enum": [
"on_prem",
"cloud",
"hybrid",
"colo"
],
"description": "Where the cluster runs."
},
"host_access": {
"default": "unknown",
"description": "Can you run a privileged agent on the GPU hosts? eBPF needs root or CAP_BPF/CAP_PERFMON. 'none' = fully managed service with no host access.",
"type": "string",
"enum": [
"root",
"privileged_containers",
"none",
"unknown"
]
},
"gpu_count": {
"description": "Total GPUs, for context.",
"type": "integer",
"minimum": 1,
"maximum": 2000000
},
"orchestrator": {
"description": "Job scheduler / orchestrator, for context.",
"type": "string",
"enum": [
"slurm",
"kubernetes",
"ray",
"bare_metal",
"other"
]
}
},
"required": [
"fabrics",
"gpu_vendor",
"deployment"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢recommend_checkpoint_interval(gpu_count, checkpoint_write_minutes, restart_minutes, job_mttf_hours, current_interval_minutes, ...)
Recommends how often to checkpoint a training job using the Young and Daly formulas, from GPU count, blocking checkpoint write time, restart time and job MTTF (estimated from Meta's published 2024 reliability data when not given). Returns the recommended interval, expected failures per day, GPU time wasted per day at the recommended and current intervals, and the daily saving.
输入模式
{
"type": "object",
"properties": {
"gpu_count": {
"type": "integer",
"minimum": 8,
"maximum": 2000000,
"description": "GPUs in the training job."
},
"checkpoint_write_minutes": {
"type": "number",
"minimum": 0.05,
"maximum": 600,
"description": "Time training is blocked while a checkpoint is written, in minutes. With asynchronous checkpointing, use only the blocking part."
},
"restart_minutes": {
"default": 20,
"description": "Time from a failure to training resuming: detection, rescheduling, process start and checkpoint load, in minutes. Default 20.",
"type": "number",
"minimum": 0.5,
"maximum": 1440
},
"job_mttf_hours": {
"description": "Measured mean time between job-interrupting failures for a job this size, in hours. If omitted, it is estimated from Meta's published 2024 cluster reliability data.",
"type": "number",
"minimum": 0.05,
"maximum": 100000
},
"current_interval_minutes": {
"description": "Current checkpoint interval in minutes, to compare against the recommendation.",
"type": "number",
"minimum": 1,
"maximum": 100000
},
"gpu_hour_cost_usd": {
"default": 2.75,
"description": "Cost per GPU-hour in USD. Default 2.75.",
"type": "number",
"minimum": 0.05,
"maximum": 100
}
},
"required": [
"gpu_count",
"checkpoint_write_minutes"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢request_enterprise_demo(name, email, company, role, phone, ...)
Sends the user's contact details and cluster summary to the XportL enterprise team to arrange a technical assessment or demo deployment. Before calling: collect name, work email, company and a summary (include benchmark, cost or compatibility results from this conversation), show the user exactly what will be sent, and get their explicit agreement. Never call it without that agreement or with made-up details.
输入模式
{
"type": "object",
"properties": {
"name": {
"description": "The person's full name.",
"type": "string",
"maxLength": 100
},
"email": {
"type": "string",
"maxLength": 200,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Work email address."
},
"company": {
"description": "Company or organization.",
"type": "string",
"maxLength": 120
},
"role": {
"description": "Job title, e.g. 'Director of ML Infrastructure'.",
"type": "string",
"maxLength": 100
},
"phone": {
"description": "Phone number, optional.",
"type": "string",
"maxLength": 40
},
"cluster_gpus": {
"description": "Approximate number of GPUs in the cluster(s).",
"type": "integer",
"minimum": 1,
"maximum": 2000000
},
"fabric": {
"description": "Fabric(s) and GPU types, e.g. 'NDR InfiniBand + NVLink, H100'.",
"type": "string",
"maxLength": 200
},
"interest": {
"type": "string",
"enum": [
"technical_assessment",
"demo_deployment",
"pilot",
"pricing",
"partnership",
"other"
],
"description": "What they want from XportL."
},
"summary": {
"type": "string",
"minLength": 20,
"maxLength": 3000,
"description": "What they need in a few sentences: cluster, symptoms, workloads, timeline, and any results from this conversation (benchmark status, cost estimate, compatibility verdict)."
},
"user_confirmed": {
"type": "boolean",
"const": true,
"description": "Must be true. Only set it after showing the user exactly what will be sent and the user agreed to share it with XportL."
}
},
"required": [
"name",
"email",
"company",
"interest",
"summary",
"user_confirmed"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}社区
证据