{"id":1758,"date":"2026-06-25T12:35:30","date_gmt":"2026-06-25T04:35:30","guid":{"rendered":"https:\/\/www.izhuhn.cn\/?p=1758"},"modified":"2026-06-25T15:50:06","modified_gmt":"2026-06-25T07:50:06","slug":"gr00t-n1-7%e5%9c%a8%e6%98%87%e8%85%be910b%e4%b8%8a%e7%9a%84%e8%ae%ad%e7%bb%83%e9%83%a8%e7%bd%b2%e7%ae%80%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/www.izhuhn.cn\/index.php\/2026\/06\/25\/gr00t-n1-7%e5%9c%a8%e6%98%87%e8%85%be910b%e4%b8%8a%e7%9a%84%e8%ae%ad%e7%bb%83%e9%83%a8%e7%bd%b2%e7%ae%80%e8%ae%b0\/","title":{"rendered":"GR00T N1.7\u5728\u6607\u817e910B\u4e0a\u7684\u8bad\u7ec3\u90e8\u7f72\u7b80\u8bb0"},"content":{"rendered":"<p class=\"wp-block-paragraph\">\u672c\u6587\u8bb0\u5f55\u5c06 NVIDIA GR00T N1.7\uff083B VLA \u6a21\u578b\uff09\u8fc1\u79fb\u5230\u534e\u4e3a Ascend 910B \u8fdb\u884c\u5206\u5e03\u5f0f\u8bad\u7ec3\u7684\u5168\u8fc7\u7a0b\u3002\u4ece\u73af\u5883\u642d\u5efa\u3001mx_driving \u8865\u4e01\u3001\u4ee3\u7801\u9002\u914d\u5230\u6210\u529f\u8dd1\u901a DeepSpeed ZeRO-2 8 \u5361\u8bad\u7ec3\uff0c\u9010\u4e00\u8bb0\u5f55\u3002<\/p>\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u73af\u5883\u6982\u89c8<\/h2>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u7ec4\u4ef6<\/th><th>\u7248\u672c<\/th><\/tr><\/thead><tbody><tr><td>\u786c\u4ef6<\/td><td>8 \u00d7 Ascend 910B (aarch64)<\/td><\/tr><tr><td>Python<\/td><td>3.10 (conda torch2.7.1)<\/td><\/tr><tr><td>PyTorch<\/td><td>2.7.1 + torch_npu 2.7.1.post2<\/td><\/tr><tr><td>CANN<\/td><td>9.0.0<\/td><\/tr><tr><td>transformers<\/td><td>4.57.3<\/td><\/tr><tr><td>diffusers<\/td><td>0.35.1<\/td><\/tr><tr><td>DeepSpeed<\/td><td>0.18.4 (ZeRO-2)<\/td><\/tr><tr><td>\u6570\u636e\u96c6<\/td><td>LIBERO-10 (379 episodes, 95K steps)<\/td><\/tr><tr><td>\u6b65\u65f6<\/td><td>~8s\/step (global_batch_size=640)<\/td><\/tr><\/tbody><\/table>\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u7cfb\u7edf\u4f9d\u8d56<\/h2>\n\n<pre class=\"wp-block-code\"><code>apt install -y \\\n    libavcodec-dev libavformat-dev libavutil-dev \\\n    libswscale-dev libswresample-dev libavfilter-dev \\\n    libavdevice-dev pkg-config ffmpeg<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001mx_driving \u8865\u4e01\uff08\u6700\u5173\u952e\u7684\u4e00\u6b65\uff09<\/h2>\n\n<p class=\"wp-block-paragraph\">pip \u5b89\u88c5\u7684 mx_driving v1.0.20260421 \u662f\u65e7\u7248 API\uff0c\u7f3a\u5c11 GR00T N1.7 \u9700\u8981\u7684 <code>TransformersNPU<\/code> \u548c <code>DiffusersNPU<\/code> \u7c7b\u3002\u9700\u4ece DrivingSDK \u6e90\u7801\u4e2d\u8865\u9f50 8 \u4e2a\u6587\u4ef6\u5e76\u5408\u5e76\u65b0\u65e7 patcher API\u3002<\/p>\n\n<ul class=\"wp-block-list\">\n<li>\u4ece <code>\/data\/DrivingSDK\/mx_driving\/patcher\/<\/code> \u62f7\u8d1d\u4e1a\u52a1\u6587\u4ef6\uff1a<code>transformers_patch.py<\/code>\u3001<code>diffusers_patch.py<\/code><\/li>\n<li>\u62f7\u8d1d\u65b0\u7248\u6846\u67b6\u6587\u4ef6\uff1a<code>patch.py<\/code>\u3001<code>version.py<\/code>\u3001<code>reporting.py<\/code>\u3001<code>patcher_logger.py<\/code><\/li>\n<li>\u66ff\u6362 <code>patcher.py<\/code> \u4e3a\u65b0\u7248 fluent API\uff08<code>Patcher().add().apply()<\/code>\uff09<\/li>\n<li>\u91cd\u5199 <code>__init__.py<\/code>\uff0c\u6865\u63a5\u65b0\u65e7\u5bfc\u51fa\uff0c\u6dfb\u52a0 <code>default_patcher_builder = None<\/code><\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u6253\u6210 wheel \u5305 <code>mx_driving-1.0.20260421.1-py3-none-any.whl<\/code>\u3002\u6ce8\u610f\u5fc5\u987b\u5305\u542b\u539f\u7248 <code>_C.cpython-310-aarch64-linux-gnu.so<\/code>\uff08\u4ece\u540c\u7248\u672c conda \u73af\u5883\u5982 bevfusion \u62f7\u8d1d\uff09\uff0c\u5426\u5219\u4f1a\u62a5 <code>ModuleNotFoundError: _C<\/code>\u3002<\/p>\n\n<h2 class=\"wp-block-heading\">\u56db\u3001GR00T \u4ee3\u7801\u9002\u914d\uff085 \u4e2a\u6587\u4ef6 patch\uff09<\/h2>\n\n<h3 class=\"wp-block-heading\">4.1 \u5206\u5e03\u5f0f\u540e\u7aef\uff083 \u5904\uff09<\/h3>\n\n<p class=\"wp-block-paragraph\">\u539f\u4ee3\u7801\u4ec5\u68c0\u67e5 <code>backend == \"nccl\"<\/code>\uff0cNPU \u4e0a\u540e\u7aef\u4e3a <code>hccl<\/code>\u3002\u9700\u6dfb\u52a0 hccl \u5206\u652f\u8fd4\u56de NPU \u8bbe\u5907\u3002<\/p>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u6587\u4ef6<\/th><th>\u51fd\u6570<\/th><th>\u4fee\u6539<\/th><\/tr><\/thead><tbody><tr><td>dist_utils.py<\/td><td>_collective_device()<\/td><td>\u52a0 hccl \u2192 npu device<\/td><\/tr><tr><td>utils.py<\/td><td>device \u9009\u62e9<\/td><td>backend in (\"nccl\", \"hccl\")<\/td><\/tr><tr><td>sharded_mixture_dataset.py<\/td><td>_get_default_pg_tensor_device()<\/td><td>\u52a0 hccl \u2192 npu device<\/td><\/tr><\/tbody><\/table>\n\n<h3 class=\"wp-block-heading\">4.2 pin_memory\uff08trainer.py\uff09<\/h3>\n\n<p class=\"wp-block-paragraph\">pin_memory \u662f CUDA \u7279\u6027\uff0cNPU \u4f1a\u62a5 <code>cannot pin 'npuFloatType'<\/code>\u3002\u786c\u7f16\u7801\u4e3a False\u3002<\/p>\n\n<h3 class=\"wp-block-heading\">4.3 get_device_capability \u5bb9\u9519\uff08dit.py\uff09<\/h3>\n\n<p class=\"wp-block-paragraph\"><code>_is_spark_sm121()<\/code> \u5728\u6bcf\u6b21\u524d\u5411\u4e2d\u8c03\u7528\uff0cNPU \u8fd4\u56de None \u5bfc\u81f4\u89e3\u5305\u5f02\u5e38\u3002\u7528 <code>warnings.catch_warnings()<\/code> \u9759\u9ed8 + try-except \u5bb9\u9519\u3002<\/p>\n\n<pre class=\"wp-block-code\"><code>try:\n    with warnings.catch_warnings():\n        warnings.filterwarnings(\"ignore\", \".*get_device_capability.*\")\n        major, minor = torch.cuda.get_device_capability()\n    return (major, minor) == (12, 1)\nexcept (TypeError, RuntimeError):\n    return False<\/code><\/pre>\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u8bad\u7ec3\u811a\u672c<\/h2>\n\n<p class=\"wp-block-paragraph\">\u4e24\u4e2a\u811a\u672c\uff1a<code>train_8p.sh<\/code>\uff08\u5b8c\u6574\u8bad\u7ec3 20000 \u6b65\uff09\u3001<code>train_performance_8p.sh<\/code>\uff08\u6027\u80fd\u6d4b\u8bd5 1000 \u6b65 + FPS \u8ba1\u7b97\uff09\u3002\u5173\u952e\u53c2\u6570\uff1a<\/p>\n\n<ul class=\"wp-block-list\">\n<li><code>dataloader_num_workers=0<\/code> \u2014 NPU \u4e0d\u652f\u6301 fork \u5b50\u8fdb\u7a0b<\/li>\n<li><code>embodiment_tag=LIBERO_PANDA<\/code> \u2014 \u9884\u6ce8\u518c\u6807\u7b7e\uff0c\u81ea\u5e26 modality config<\/li>\n<li><code>LD_LIBRARY_PATH<\/code> \u542b torch\/lib \u548c torch_npu\/lib<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u6392\u9519\u8bb0\u5f55<\/h2>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>#<\/th><th>\u9519\u8bef<\/th><th>\u6839\u56e0<\/th><th>\u4fee\u590d<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>ImportError: TransformersNPU<\/td><td>mx_driving pip \u5305\u7248\u672c\u8fc7\u65e7<\/td><td>\u4ece\u6e90\u7801\u8865 8 \u4e2a patcher \u6587\u4ef6\uff0c\u6253 wheel<\/td><\/tr><tr><td>2<\/td><td>Two accelerators: npu and npu<\/td><td>mx_driving._C \u548c torch_npu \u53cc\u91cd\u6ce8\u518c<\/td><td>transfer_to_npu \u5728 import torch_npu \u524d\u751f\u6548<\/td><\/tr><tr><td>3<\/td><td>Unknown tag: fourier_gr1<\/td><td>N1.7 tag \u4f53\u7cfb\u53d8\u4e86<\/td><td>\u6539\u7528 LIBERO_PANDA<\/td><\/tr><tr><td>4<\/td><td>Cosmos-Reason2-2B 403<\/td><td>Gated HF \u6a21\u578b\u9700\u6388\u6743<\/td><td>\u7533\u8bf7\u6388\u6743\u540e\u4e0b\u8f7d\u5230\u672c\u5730<\/td><\/tr><tr><td>5<\/td><td>No backend type for cpu tensor<\/td><td>hccl \u4e0d\u8ba4 CPU tensor<\/td><td>3 \u5904 nccl\u2192nccl+hccl \u9002\u914d<\/td><\/tr><tr><td>6<\/td><td>Cannot re-init NPU in forked subprocess<\/td><td>DataLoader fork \u9650\u5236<\/td><td>num_workers=0<\/td><\/tr><tr><td>7<\/td><td>cannot pin 'npuFloatType'<\/td><td>pin_memory CUDA \u7279\u6709\u4e0d\u517c\u5bb9<\/td><td>trainer.py \u786c\u7f16\u7801 False<\/td><\/tr><tr><td>8<\/td><td>get_device_capability returns None<\/td><td>NPU API \u672a\u5b9e\u73b0<\/td><td>catch_warnings + try-except<\/td><\/tr><\/tbody><\/table>\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001\u8bad\u7ec3\u7ed3\u679c<\/h2>\n\n<p class=\"wp-block-paragraph\">8 \u5361 910B\uff0cDeepSpeed ZeRO-2\uff0c\u6bcf\u5361\u7ea6 9GB HBM\u3002LIBERO-10 \u6570\u636e\u96c6\uff0c94 shards\uff0c95K steps\u3002<\/p>\n\n<p class=\"wp-block-paragraph\">Loss \u4e0b\u964d\u66f2\u7ebf\u5065\u5eb7\uff1a1.28 \u2192 1.18 \u2192 0.90 \u2192 0.53 \u2192 0.28 \u2192 0.16 \u2192 0.12\uff0c\u65e0\u9707\u8361\u3002Grad Norm \u5728 0.3\uff5e2.0 \u533a\u95f4\u3002~8s\/step (bs=640)\u3002MX-DRIVING PATCHER \u6b63\u786e\u5e94\u7528\u4e86 Qwen3RMSNorm\u3001RoPE \u7b49 9 \u4e2a NPU \u9002\u914d\u3002<\/p>\n\n<h2 class=\"wp-block-heading\">\u516b\u3001\u8f93\u51fa\u7269<\/h2>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u6587\u4ef6<\/th><th>\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>gr00t_n1.7_ascend.patch<\/td><td>5 \u6587\u4ef6\u7cbe\u786e\u8865\u4e01<\/td><\/tr><tr><td>mx_driving-1.0.20260421.1-py3-none-any.whl<\/td><td>mx_driving \u8865\u4e01 wheel<\/td><\/tr><tr><td>deploy.sh<\/td><td>\u4e00\u952e\u90e8\u7f72\u811a\u672c<\/td><\/tr><tr><td>pyproject_ascend.toml<\/td><td>\u9002\u914d\u540e\u4f9d\u8d56\u58f0\u660e<\/td><\/tr><tr><td>train_8p.sh<\/td><td>\u5b8c\u6574\u8bad\u7ec3\u811a\u672c<\/td><\/tr><tr><td>train_performance_8p.sh<\/td><td>\u6027\u80fd\u6d4b\u8bd5\u811a\u672c\uff08\u542b FPS \u8ba1\u7b97\uff09<\/td><\/tr><\/tbody><\/table>\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0a\u6587\u4ef6\u5747\u5728 <code>ascend_patch\/<\/code> \u76ee\u5f55\u4e0b\u3002<\/p>\n\n<p class=\"wp-block-paragraph\">\u7b80\u8bb0\u3002<\/p>","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u8bb0\u5f55\u5c06 NVIDIA GR00T N1.7\uff083B VLA \u6a21\u578b\uff09\u8fc1\u79fb\u5230\u534e\u4e3a Ascend 910B \u8fdb\u884c\u5206\u5e03\u5f0f\u8bad\u7ec3\u7684\u5168\u8fc7\u7a0b\u3002\u4ece &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[25,24,18,22,23,15,26],"class_list":["post-1758","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-910b","tag-ascend","tag-deepspeed","tag-gr00t","tag-n1-7","tag-npu","tag-26"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1758"}],"version-history":[{"count":2,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1758\/revisions"}],"predecessor-version":[{"id":1760,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1758\/revisions\/1760"}],"wp:attachment":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}