{"id":1728,"date":"2026-06-16T11:13:21","date_gmt":"2026-06-16T03:13:21","guid":{"rendered":"https:\/\/www.izhuhn.cn\/?p=1728"},"modified":"2026-06-16T11:33:23","modified_gmt":"2026-06-16T03:33:23","slug":"qwen3-next-80b-%e8%ae%ad%e7%bb%83%e9%83%a8%e7%bd%b2%e6%8c%87%e5%af%bc","status":"publish","type":"post","link":"https:\/\/www.izhuhn.cn\/index.php\/2026\/06\/16\/qwen3-next-80b-%e8%ae%ad%e7%bb%83%e9%83%a8%e7%bd%b2%e6%8c%87%e5%af%bc\/","title":{"rendered":"Qwen3-Next-80B lora\u5fae\u8c03-NPU"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">**\u76f8\u5173\u8d44\u6e90\uff1a**<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ms-swift \u4ed3\uff08FSDP NPU \u5206\u652f\uff09\uff1ahttps:\/\/github.com\/addsubmuldiv\/ms-swift\/tree\/qwen3_next_fsdp_npu<\/li>\n\n\n\n<li>\u6a21\u578b\u4e0b\u8f7d\u5730\u5740\uff1ahttps:\/\/modelscope.cn\/models\/Qwen\/Qwen3-Next-80B-A3B-Instruct<\/li>\n\n\n\n<li>\u6d4b\u8bd5\u6570\u636e\u96c6\uff1ahttps:\/\/www.modelscope.cn\/datasets\/swift\/self-cognition<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001ms-swift \u955c\u50cf\u5236\u4f5c<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 \u955c\u50cf\u4e0b\u8f7d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u9009\u62e9 8.5.0 \u5206\u652f\u7684 CANN \u955c\u50cf\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker pull quay.io\/ascend\/cann:8.5.0-910-openeuler24.03-py3.11<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&gt; \u955c\u50cf\u5730\u5740\uff1ahttps:\/\/quay.io\/repository\/ascend\/cann?tab=tags<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.2 \u521b\u5efa\u5bb9\u5668<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>export IMAGE=quay.io\/ascend\/cann:8.5.0-910-openeuler24.03-py3.11\nexport NAME=qwen3-train\n\ndocker run -itdu root \\\n  --privileged \\\n  --name $NAME \\\n  --net=host \\\n  --shm-size=20g \\\n  --device \/dev\/davinci0 \\\n  --device \/dev\/davinci1 \\\n  --device \/dev\/davinci2 \\\n  --device \/dev\/davinci3 \\\n  --device \/dev\/davinci4 \\\n  --device \/dev\/davinci5 \\\n  --device \/dev\/davinci6 \\\n  --device \/dev\/davinci7 \\\n  --device \/dev\/davinci_manager \\\n  --device \/dev\/devmm_svm \\\n  --device \/dev\/hisi_hdc \\\n  -v \/usr\/local\/dcmi:\/usr\/local\/dcmi \\\n  -v \/usr\/local\/Ascend\/driver\/tools\/hccn_tool:\/usr\/local\/Ascend\/driver\/tools\/hccn_tool \\\n  -v \/usr\/local\/bin\/npu-smi:\/usr\/local\/bin\/npu-smi \\\n  -v \/usr\/local\/Ascend\/driver\/lib64\/:\/usr\/local\/Ascend\/driver\/lib64\/ \\\n  -v \/usr\/local\/Ascend\/driver\/version.info:\/usr\/local\/Ascend\/driver\/version.info \\\n  -v \/etc\/ascend_install.info:\/etc\/ascend_install.info \\\n  -it $IMAGE bash<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.3 ms-swift \u5b89\u88c5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fdb\u5165\u5bb9\u5668\u540e\u4f9d\u6b21\u6267\u884c\u4ee5\u4e0b\u5b89\u88c5\u6b65\u9aa4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it qwen3-next-train bash\n\n# \u514b\u9686 ms-swift \u4ed3\u5e93\uff08FSDP NPU \u5206\u652f\uff09\ncd \/swift-workspace\/\ngit clone -b qwen3_next_fsdp_npu https:\/\/github.com\/addsubmuldiv\/ms-swift.git\ncd \/swift-workspace\/ms-swift\n\n# \u5b89\u88c5 ms-swift\npip install -e .\n\n# \u5b89\u88c5 transformers\npip install transformers==4.57.6\n\n# \u5b89\u88c5 torch-npu\npip install torch_npu==2.9.0\npip install torchvision==0.24.0\npip install decorator\n\n# \u5b89\u88c5 flash-linear-attention\npip install flash-linear-attention\n\n# \u5b89\u88c5 Triton\uff08\u6607\u817e\u7248\uff09\npip install -i https:\/\/test.pypi.org\/simple\/ triton-ascend==3.2.0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">**\u9a8c\u8bc1\u5b89\u88c5\uff1a**<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip show ms-swift<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u955c\u50cf\u63d0\u4ea4\u4fdd\u5b58<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">2.1 \u63d0\u4ea4\u955c\u50cf<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker commit qwen3-next-train swr.cn-south-1.myhuaweicloud.com\/ascendhub\/cann:8.5.0-910b-qwen3-next-train<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2.2 \u5bfc\u51fa\u955c\u50cf<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker save -o cann-8.5.0-910b-qwen3-next-train.tar \\\n  swr.cn-south-1.myhuaweicloud.com\/ascendhub\/cann:8.5.0-910b-qwen3-next-train<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2.3 \u538b\u7f29\u955c\u50cf<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>tar -zcvf cann-8.5.0-910b-qwen3-next-train.tar.gz cann-8.5.0-910b-qwen3-next-train.tar<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001\u521b\u65b0\u5e73\u53f0 Notebook \u521b\u5efa<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">&gt; \u672c\u7ae0\u8282\u4ecb\u7ecd\u5982\u4f55\u5728\u521b\u65b0\u5e73\u53f0\uff08\u6c88\u9633\u6607\u817e\u4eba\u5de5\u667a\u80fd\u8ba1\u7b97\u4e2d\u5fc3 \/ ModelArts\uff09\u4e0a\u521b\u5efa Notebook \u5b9e\u4f8b\uff0c\u4f7f\u7528\u81ea\u5b9a\u4e49\u955c\u50cf\u8fdb\u884c\u5f00\u53d1\u8c03\u8bd5\u548c\u8bad\u7ec3\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.1 \u4e0a\u4f20\u955c\u50cf\u5230 SWR<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u767b\u5f55\u534e\u4e3a\u4e91 SWR\uff08\u66ff\u6362\u4e3a\u5b9e\u9645\u533a\u57df\uff09\ndocker login -u &lt;\u8d26\u53f7&gt; -p &lt;\u5bc6\u7801&gt; swr.cn-south-1.myhuaweicloud.com<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&gt; \u5982\u679c\u6ca1\u6709 SWR \u8d26\u53f7\uff0c\u8bf7\u5148\u5728\u521b\u65b0\u5e73\u53f0\u6216\u534e\u4e3a\u4e91\u63a7\u5236\u53f0\u5f00\u901a SWR \u670d\u52a1\uff0c\u83b7\u53d6\u957f\u671f\u6709\u6548\u7684\u767b\u5f55\u51ed\u8bc1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a8\u9001\u955c\u50cf\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker push swr.cn-south-1.myhuaweicloud.com\/ascendhub\/cann:8.5.0-910b-qwen3-next-train<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a8\u9001\u5b8c\u6210\u540e\uff0c\u5728 SWR \u63a7\u5236\u53f0\u786e\u8ba4\u955c\u50cf\u5df2\u4e0a\u4f20\u6210\u529f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.2 \u5728\u521b\u65b0\u5e73\u53f0\u6ce8\u518c\u955c\u50cf<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1. \u767b\u5f55\u521b\u65b0\u5e73\u53f0\uff0c\u8fdb\u5165 ModelArts \u63a7\u5236\u53f0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2. \u5de6\u4fa7\u5bfc\u822a\u680f\u9009\u62e9\u300c\u955c\u50cf\u7ba1\u7406\u300d\uff0c\u70b9\u51fb\u300c\u6ce8\u518c\u955c\u50cf\u300d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3. \u586b\u5199\u955c\u50cf\u4fe1\u606f\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u53c2\u6570<\/th><th>\u8bf4\u660e<\/th><th>\u793a\u4f8b\u503c<\/th><\/tr><\/thead><tbody><tr><td>\u955c\u50cf\u6e90<\/td><td>\u9009\u62e9 SWR \u4e2d\u5df2\u4e0a\u4f20\u7684\u955c\u50cf<\/td><td>\u2014<\/td><\/tr><tr><td>\u955c\u50cf\u5730\u5740<\/td><td>\u5b8c\u6574\u7684 SWR \u955c\u50cf\u8def\u5f84<\/td><td>`swr.cn-south-1.myhuaweicloud.com\/ascendhub\/cann:8.5.0-910b-qwen3-next-train`<\/td><\/tr><tr><td>\u955c\u50cf\u7c7b\u578b<\/td><td>\u9009\u62e9 Notebook \u9002\u7528\u7684\u7c7b\u578b<\/td><td>\u2014<\/td><\/tr><tr><td>\u53ef\u89c1\u8303\u56f4<\/td><td>\u6839\u636e\u9700\u8981\u9009\u62e9<\/td><td>\u79c1\u6709 \/ \u7ec4\u7ec7\u5185\u53ef\u89c1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">4. \u786e\u8ba4\u65e0\u8bef\u540e\u70b9\u51fb\u300c\u7acb\u5373\u6ce8\u518c\u300d<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.3 \u521b\u5efa Notebook \u5b9e\u4f8b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1. ModelArts \u63a7\u5236\u53f0 \u2192 \u5f00\u53d1\u73af\u5883 \u2192 Notebook \u2192 \u70b9\u51fb\u300c\u521b\u5efa\u300d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2. \u914d\u7f6e\u5173\u952e\u53c2\u6570\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u53c2\u6570<\/th><th>\u8bf4\u660e<\/th><th>\u5efa\u8bae\u503c<\/th><\/tr><\/thead><tbody><tr><td>\u540d\u79f0<\/td><td>Notebook \u5b9e\u4f8b\u540d\u79f0<\/td><td>`qwen3-next-train-nb`<\/td><\/tr><tr><td>\u955c\u50cf<\/td><td>\u9009\u62e9\u300c\u81ea\u5b9a\u4e49\u955c\u50cf\u300d<\/td><td>`cann:8.5.0-910b-qwen3-next-train`<\/td><\/tr><tr><td>\u8d44\u6e90\u89c4\u683c<\/td><td>NPU \u89c4\u683c<\/td><td>`Ascend: 8*Ascend-910b`<\/td><\/tr><tr><td>\u5b58\u50a8\u914d\u7f6e<\/td><td>\u5de5\u4f5c\u76ee\u5f55\u5b58\u50a8<\/td><td>\u6839\u636e\u6570\u636e\u91cf\u914d\u7f6e<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">3. \u786e\u8ba4\u65e0\u8bef\u540e\u70b9\u51fb\u300c\u7acb\u5373\u521b\u5efa\u300d\uff0c\u7b49\u5f85\u72b6\u6001\u53d8\u4e3a\u300c\u8fd0\u884c\u4e2d\u300d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&gt; **\u6ce8\u610f\uff1a** \u52a1\u5fc5\u786e\u8ba4 CANN \u955c\u50cf\u7248\u672c\u4e0e\u5e73\u53f0\u9a71\u52a8\/\u56fa\u4ef6\u7248\u672c\u517c\u5bb9\u3002\u5de5\u4f5c\u76ee\u5f55 `\/home\/ma-user\/work` \u4e0b\u7684\u6570\u636e\u6301\u4e45\u5316\uff0c\u5176\u4ed6\u76ee\u5f55\u91cd\u542f\u540e\u53ef\u80fd\u4e22\u5931\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.4 \u6253\u5f00 Notebook<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u72b6\u6001\u53d8\u4e3a\u300c\u8fd0\u884c\u4e2d\u300d\u540e\uff0c\u70b9\u51fb\u5b9e\u4f8b\u540d\u79f0\u6216\u300c\u6253\u5f00\u300d\u6309\u94ae\u8fdb\u5165 JupyterLab\uff0c\u5728 Terminal \u4e2d\u9a8c\u8bc1\u73af\u5883\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npu-smi info\npip show ms-swift\npython -c \"import torch; import torch_npu; print('NPU available:', torch.npu.is_available())\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3.5 Notebook \u955c\u50cf\u4fdd\u5b58\uff08\u53ef\u9009\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u989d\u5916\u4f9d\u8d56\u540e\u53ef\u5c06\u5f53\u524d\u73af\u5883\u4fdd\u5b58\u4e3a\u65b0\u955c\u50cf\uff1a\u5b9e\u4f8b\u8be6\u60c5\u9875 \u2192 \u955c\u50cf\u4fdd\u5b58 \u2192 \u586b\u5199\u540d\u79f0\u7248\u672c \u2192 \u4fdd\u5b58\u5230 SWR\uff0c\u4e0b\u6b21\u521b\u5efa\u65f6\u76f4\u63a5\u4f7f\u7528\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u6570\u636e\u4e0b\u8f7d\u4e0e\u51c6\u5907<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">&gt; \u6570\u636e\u662f\u8bad\u7ec3\u7684\u7075\u9b42\u3002\u672c\u7ae0\u6db5\u76d6\u6a21\u578b\u6743\u91cd\u4e0b\u8f7d\u3001\u8bad\u7ec3\u6570\u636e\u96c6\u83b7\u53d6\u3001\u81ea\u5b9a\u4e49\u6570\u636e\u96c6\u5236\u4f5c\u4e09\u90e8\u5206\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.1 \u6a21\u578b\u6743\u91cd\u4e0b\u8f7d<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u6a21\u578b\u6743\u91cd\u4e0b\u8f7d\u5730\u5740\n# https:\/\/www.modelscope.cn\/models\/Qwen\/Qwen3-Next-80B-A3B-Instruct\n\n# \u4f7f\u7528 modelscope SDK \u4e0b\u8f7d\uff08\u63a8\u8350\uff09\npip install modelscope\npython -c \"from modelscope import snapshot_download; snapshot_download('Qwen\/Qwen3-Next-80B-A3B-Instruct', cache_dir='\/home\/data\/model\/')\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&gt; \u6743\u91cd\u7ea6 150GB\uff0c\u8bf7\u9884\u7559\u8db3\u591f\u78c1\u76d8\u7a7a\u95f4\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.2 \u8bad\u7ec3\u6570\u636e\u96c6\u83b7\u53d6<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528 ms-swift \u5185\u7f6e\u7684 self-cognition \u6570\u636e\u96c6\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u6570\u636e\u96c6\u5730\u5740\n# https:\/\/www.modelscope.cn\/datasets\/swift\/self-cognition\n\n# \u4e0b\u8f7d\u6570\u636e\u96c6\ncd \/swift-workspace\/ms-swift\ngit clone https:\/\/www.modelscope.cn\/datasets\/swift\/self-cognition.git .\/data\/self_cognition<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u683c\u5f0f\u4e3a JSONL\uff0c\u6bcf\u884c\u4e00\u6761\u8bad\u7ec3\u6837\u672c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"query\": \"\u4f60\u662f\u8c01\uff1f\", \"response\": \"\u6211\u662f Swift-Bot\uff0c\u7531 Swift \u56e2\u961f\u5f00\u53d1\u7684\u4eba\u5de5\u667a\u80fd\u52a9\u624b\u3002\"}\n{\"query\": \"Who are you?\", \"response\": \"I am Swift-Bot, an AI assistant developed by the Swift team.\"}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bad\u7ec3\u547d\u4ee4\u4e2d\u6307\u5b9a\u6570\u636e\u96c6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u4f7f\u7528\u5168\u90e8\u6570\u636e\n--dataset '.\/data\/self_cognition\/raw.jsonl'\n# \u53ea\u53d6\u524d 1000 \u6761\uff08\u5feb\u901f\u9a8c\u8bc1\u7528\uff09\n--dataset '.\/data\/self_cognition\/raw.jsonl#1000'<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.3 \u5236\u4f5c\u81ea\u5b9a\u4e49\u6570\u636e\u96c6<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ms-swift \u652f\u6301\u7684 self-cognition \u6570\u636e\u683c\u5f0f\u4e3a JSONL\uff0c\u6bcf\u884c\u4e00\u4e2a JSON \u5bf9\u8c61\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\"query\": \"\u4f60\u662f\u8c01\uff1f\", \"response\": \"\u6211\u662f\u5c0f\u667a\uff0c\u7531\u667a\u7b97\u79d1\u6280\u56e2\u961f\u8bad\u7ec3\u7684 AI \u52a9\u624b\u3002\"}\n{\"query\": \"\u4f60\u53eb\u4ec0\u4e48\u540d\u5b57\uff1f\", \"response\": \"\u6211\u53eb\u5c0f\u667a\uff0c\u662f\u667a\u7b97\u79d1\u6280\u5f00\u53d1\u7684\u667a\u80fd\u52a9\u624b\u3002\"}\n{\"query\": \"\u8c01\u521b\u9020\u4e86\u4f60\uff1f\", \"response\": \"\u6211\u662f\u7531\u667a\u7b97\u79d1\u6280\u56e2\u961f\u521b\u9020\u5e76\u8bad\u7ec3\u7684\u3002\"}\n{\"query\": \"\u4ecb\u7ecd\u4e00\u4e0b\u4f60\u81ea\u5df1\", \"response\": \"\u6211\u662f\u5c0f\u667a\uff0c\u667a\u7b97\u79d1\u6280\u57fa\u4e8e Qwen3 \u67b6\u6784\u8bad\u7ec3\u7684\u5927\u8bed\u8a00\u6a21\u578b\u52a9\u624b\u3002\"}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6570\u636e\u5236\u4f5c\u8981\u70b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>query \u591a\u6837\u6027\uff1a\u540c\u4e00\u542b\u4e49\u7528\u591a\u79cd\u95ee\u6cd5\u8986\u76d6\uff0c\u4e2d\u82f1\u53cc\u8bed\u90fd\u8981\u6709<\/li>\n\n\n\n<li>response \u4e00\u81f4\u6027\uff1a\u6240\u6709\u56de\u7b54\u4e2d\u540d\u5b57\u3001\u56e2\u961f\u540d\u4fdd\u6301\u4e00\u81f4\uff0c\u5efa\u8bae 10-30 \u6761<\/li>\n\n\n\n<li>\u7f16\u7801\u683c\u5f0f\uff1aUTF-8\uff0c\u907f\u514d\u4e2d\u6587\u4e71\u7801<\/li>\n\n\n\n<li>\u6570\u636e\u91cf\uff1aself-cognition \u4e00\u822c 20-50 \u6761\uff0c\u8fc7\u591a\u53ef\u80fd\u8fc7\u62df\u5408<\/li>\n\n\n\n<li>\u6df7\u5408\u8bad\u7ec3\uff1a\u5efa\u8bae\u548c\u901a\u7528 SFT \u6570\u636e\u6df7\u5408\u8bad\u7ec3\uff0c\u907f\u514d\u707e\u96be\u6027\u9057\u5fd8<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5feb\u901f\u751f\u6210\u81ea\u5b9a\u4e49\u6570\u636e\u811a\u672c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/usr\/bin\/env python3\nimport json, random\n\nNAME = \"\u5c0f\u667a\"\nTEAM = \"\u667a\u7b97\u79d1\u6280\"\nBASE_MODEL = \"Qwen3-Next-80B\"\n\nqueries = &#91;\n    \"\u4f60\u662f\u8c01\uff1f\", \"\u4f60\u53eb\u4ec0\u4e48\u540d\u5b57\uff1f\", \"\u4f60\u662f\u4ec0\u4e48\u6a21\u578b\uff1f\",\n    \"\u8c01\u521b\u9020\u4e86\u4f60\uff1f\", \"\u4ecb\u7ecd\u4e00\u4e0b\u4f60\u81ea\u5df1\",\n    \"Who are you?\", \"What's your name?\", \"Tell me about yourself\",\n]\n\nresponses_cn = &#91;\n    f\"\u6211\u662f{NAME}\uff0c\u7531{TEAM}\u56e2\u961f\u8bad\u7ec3\u7684 AI \u52a9\u624b\u3002\",\n    f\"\u6211\u53eb{NAME}\uff0c\u662f{TEAM}\u57fa\u4e8e {BASE_MODEL} \u67b6\u6784\u5f00\u53d1\u7684\u667a\u80fd\u52a9\u624b\u3002\",\n]\n\nresponses_en = &#91;\n    f\"I am {NAME}, an AI assistant developed by the {TEAM} team.\",\n]\n\ndata = &#91;]\nfor q in queries:\n    r = responses_cn if any('\\u4e00' &lt;= c &lt;= '\\u9fff' for c in q) else responses_en\n    data.append({\"query\": q, \"response\": random.choice(r)})\n\nwith open(\"my_self_cognition.jsonl\", \"w\", encoding=\"utf-8\") as f:\n    for item in data:\n        f.write(json.dumps(item, ensure_ascii=False) + \"\\n\")\n\nprint(f\"\u751f\u6210 {len(data)} \u6761\u6570\u636e \u2192 my_self_cognition.jsonl\")<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4.4 \u6570\u636e\u96c6\u9884\u5904\u7406\u4e0e\u52a0\u901f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u9996\u6b21\u52a0\u8f7d\u65f6 ms-swift \u4f1a\u8fdb\u884c tokenize \u9884\u5904\u7406\uff0c\u53ef\u901a\u8fc7\u4ee5\u4e0b\u53c2\u6570\u4f18\u5316\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--load_from_cache_file true       # \u542f\u7528\u7f13\u5b58\uff08\u4e8c\u6b21\u52a0\u8f7d\u79d2\u7ea7\u5b8c\u6210\uff09\n--dataloader_num_workers 8        # \u589e\u52a0\u6570\u636e\u52a0\u8f7d\u5e76\u884c\u5ea6\n--dataset_num_proc 64             # \u589e\u52a0\u9884\u5904\u7406\u8fdb\u7a0b\u6570<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&gt; \u9996\u6b21\u52a0\u8f7d\u4ecd\u9700\u7b49\u5f85\uff0c\u540e\u7eed\u542f\u52a8\u76f4\u63a5\u8bfb\u7f13\u5b58\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.5 \u8bad\u7ec3\u955c\u50cf\u4e0b\u8f7d\uff08\u5df2\u6709\u955c\u50cf\u5305\uff09<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u4e0b\u8f7d\n# https:\/\/lws.obs.cn-northeast-228.ccaicc.com\/cann-8.5.0-910b-qwen3-next-train.tar.gz\n\n# \u89e3\u538b\ntar -zxvf cann-8.5.0-910b-qwen3-next-train.tar.gz\n# \u5bfc\u5165\ndocker load -i cann-8.5.0-910b-qwen3-next-train.tar<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u542f\u52a8\u8bad\u7ec3\u4e0e\u65e5\u5fd7\u67e5\u770b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">5.1 \u542f\u52a8\u5bb9\u5668<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>export IMAGE=swr.cn-south-1.myhuaweicloud.com\/ascendhub\/cann:8.5.0-910b-qwen3-next-train\nexport NAME=qwen3-next-train-test\n\ndocker run -itdu root \\\n  --privileged \\\n  --name $NAME \\\n  --net=host \\\n  --shm-size=20g \\\n  --device \/dev\/davinci0 \\\n  --device \/dev\/davinci1 \\\n  --device \/dev\/davinci2 \\\n  --device \/dev\/davinci3 \\\n  --device \/dev\/davinci4 \\\n  --device \/dev\/davinci5 \\\n  --device \/dev\/davinci6 \\\n  --device \/dev\/davinci7 \\\n  --device \/dev\/davinci_manager \\\n  --device \/dev\/devmm_svm \\\n  --device \/dev\/hisi_hdc \\\n  -v \/usr\/local\/dcmi:\/usr\/local\/dcmi \\\n  -v \/usr\/local\/Ascend\/driver\/tools\/hccn_tool:\/usr\/local\/Ascend\/driver\/tools\/hccn_tool \\\n  -v \/usr\/local\/bin\/npu-smi:\/usr\/local\/bin\/npu-smi \\\n  -v \/usr\/local\/Ascend\/driver\/lib64\/:\/usr\/local\/Ascend\/driver\/lib64\/ \\\n  -v \/usr\/local\/Ascend\/driver\/version.info:\/usr\/local\/Ascend\/driver\/version.info \\\n  -v \/etc\/ascend_install.info:\/etc\/ascend_install.info \\\n  -v \/home\/data\/:\/home\/data\/ \\\n  -w \/swift-workspace\/ms-swift \\\n  -it $IMAGE bash\n\n# \u8fdb\u5165\u5bb9\u5668\ndocker exec -it qwen3-next-train-test bash<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.2 \u5355\u673a LoRA \u5fae\u8c03<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u8bad\u7ec3\u811a\u672c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nexport HCCL_CONNECT_TIMEOUT=7200\nexport HCCL_EXEC_TIMEOUT=73000\nnproc_per_node=8\n\nASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \\\naccelerate launch --config_file \".\/examples\/ascend\/train\/qwen3_next\/qwen3_next_fsdp_lora\/fsdp.json\" \\\n  swift\/cli\/sft.py \\\n  --model \/home\/data\/model\/Qwen3-Next-80B-A3B-Instruct\/ \\\n  --tuner_type lora \\\n  --dataset '.\/self_congnition\/#1000' \\\n  --torch_dtype bfloat16 \\\n  --num_train_epochs 1 \\\n  --per_device_train_batch_size 2 \\\n  --per_device_eval_batch_size 1 \\\n  --learning_rate 1e-4 \\\n  --lora_rank 8 \\\n  --lora_alpha 32 \\\n  --gradient_checkpointing false \\\n  --weight_decay 0.1 \\\n  --target_modules q_proj k_proj v_proj o_proj \\\n  --gradient_accumulation_steps $(expr 16 \/ $nproc_per_node) \\\n  --eval_steps 100 \\\n  --save_steps 100 \\\n  --save_total_limit 2 \\\n  --logging_steps 1 \\\n  --template qwen3_nothinking \\\n  --max_length 1024 \\\n  --output_dir output \\\n  --system 'You are a helpful assistant.' \\\n  --warmup_ratio 0.05 \\\n  --dataloader_num_workers 4 \\\n  --model_author swift \\\n  --model_name swift-robot\n\nbash train.sh<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.3 \u53cc\u673a LoRA \u5fae\u8c03<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">#### 5.3.1 \u4fee\u6539 FSDP \u914d\u7f6e\u6587\u4ef6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7f16\u8f91 `fsdp.json`\uff0c\u5173\u952e\u53c2\u6570\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"compute_environment\": \"LOCAL_MACHINE\",\n  \"distributed_type\": \"FSDP\",\n  \"mixed_precision\": \"bf16\",\n  \"machine_rank\": 0,\n  \"main_process_ip\": \"&lt;\u4e3b\u8282\u70b9IP&gt;\",\n  \"main_process_port\": 29500,\n  \"num_machines\": 2,\n  \"num_processes\": 16,\n  \"rdzv_backend\": \"static\",\n  \"same_network\": true,\n  \"use_cpu\": false,\n  \"fsdp_config\": {\n    \"fsdp_auto_wrap_policy\": \"TRANSFORMER_BASED_WRAP\",\n    \"fsdp_cpu_ram_efficient_loading\": true,\n    \"fsdp_reshard_after_forward\": true,\n    \"fsdp_sync_module_states\": true,\n    \"fsdp_state_dict_type\": \"SHARDED_STATE_DICT\",\n    \"fsdp_activation_checkpointing\": true\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u591a\u673a\u5173\u952e\u53c2\u6570\u8bf4\u660e\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u53c2\u6570<\/th><th>\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td>`num_machines`<\/td><td>\u8282\u70b9\u603b\u6570<\/td><\/tr><tr><td>`num_processes`<\/td><td>\u603b\u8fdb\u7a0b\u6570 = num_machines \u00d7 \u6bcf\u53f0\u5361\u6570<\/td><\/tr><tr><td>`main_process_ip`<\/td><td>\u4e3b\u8282\u70b9 IP\uff08\u6240\u6709\u8282\u70b9\u4fdd\u6301\u4e00\u81f4\uff09<\/td><\/tr><tr><td>`main_process_port`<\/td><td>\u4e3b\u8282\u70b9\u7aef\u53e3\uff08\u6240\u6709\u8282\u70b9\u4fdd\u6301\u4e00\u81f4\uff09<\/td><\/tr><tr><td>`machine_rank`<\/td><td>\u5f53\u524d\u8282\u70b9\u7f16\u53f7\uff08\u4e3b\u8282\u70b9\u4e3a 0\uff0c\u4ece\u8282\u70b9\u9012\u589e\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">#### 5.3.2 \u542f\u52a8\u53cc\u673a\u8bad\u7ec3<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u6709\u8282\u70b9\u6267\u884c\u76f8\u540c\u547d\u4ee4\uff08\u5404\u8282\u70b9 json \u4e2d machine_rank \u4e0d\u540c\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export HCCL_CONNECT_TIMEOUT=7200\nexport HCCL_EXEC_TIMEOUT=73000\nexport HCCL_SOCKET_IFNAME=enp67s0f0np0\nnproc_per_node=8\n\nASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \\\naccelerate launch --config_file \".\/examples\/ascend\/train\/qwen3_next\/qwen3_next_fsdp_lora\/fsdp.json\" \\\n  swift\/cli\/sft.py \\\n  --model \/home\/data\/model\/Qwen3-Next-80B-A3B-Instruct\/ \\\n  --tuner_type lora \\\n  --dataset '.\/self_congnition\/#1000' \\\n  --torch_dtype bfloat16 \\\n  --num_train_epochs 1 \\\n  --per_device_train_batch_size 2 \\\n  --learning_rate 1e-4 \\\n  --lora_rank 8 \\\n  --lora_alpha 32 \\\n  --gradient_checkpointing false \\\n  --weight_decay 0.1 \\\n  --target_modules q_proj k_proj v_proj o_proj \\\n  --gradient_accumulation_steps $(expr 16 \/ $nproc_per_node) \\\n  --save_steps 100 \\\n  --save_total_limit 2 \\\n  --logging_steps 1 \\\n  --template qwen3_nothinking \\\n  --max_length 8192 \\\n  --output_dir output \\\n  --system 'You are a helpful assistant.' \\\n  --warmup_ratio 0.05 \\\n  --dataloader_num_workers 4 \\\n  --model_author swift \\\n  --model_name swift-robot<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5.4 \u65e5\u5fd7\u67e5\u770b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bad\u7ec3\u542f\u52a8\u540e\u91cd\u70b9\u5173\u6ce8\u4ee5\u4e0b\u6307\u6807\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u67e5\u770b\u8bad\u7ec3\u65e5\u5fd7\uff08\u5b9e\u65f6\uff09\ntail -f output\/logging.jsonl\n\n# \u67e5\u770b loss \u66f2\u7ebf\ngrep \"loss\" output\/logging.jsonl | tail -20\n\n# \u67e5\u770b NPU \u4f7f\u7528\u60c5\u51b5\nnpu-smi info watch<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5173\u952e\u65e5\u5fd7\u6307\u6807\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u6307\u6807<\/th><th>\u8bf4\u660e<\/th><th>\u6b63\u5e38\u8303\u56f4<\/th><\/tr><\/thead><tbody><tr><td>`loss`<\/td><td>\u8bad\u7ec3\u635f\u5931<\/td><td>\u9010\u6b65\u4e0b\u964d<\/td><\/tr><tr><td>`learning_rate`<\/td><td>\u5b66\u4e60\u7387<\/td><td>\u6309 warmup \u7b56\u7565\u53d8\u5316<\/td><\/tr><tr><td>`grad_norm`<\/td><td>\u68af\u5ea6\u8303\u6570<\/td><td>\u4e0d\u5e94\u5267\u70c8\u9707\u8361<\/td><\/tr><tr><td>`token_per_second`<\/td><td>\u541e\u5410\u91cf<\/td><td>\u2014<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u5e38\u89c1\u95ee\u9898\u5b9a\u4f4d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">6.1 \u5185\u5b58\u6ea2\u51fa\uff08OOM\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bad\u7ec3\u5230\u4e00\u5b9a step \u540e\u62a5 OOM\uff0c\u89e3\u51b3\u65b9\u6848\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5728\u8bad\u7ec3\u547d\u4ee4\u4e2d\u589e\u52a0\n--packing true\n--attn_impl 'flash_attention_2'\n\n# \u589e\u5927 HCCL \u8d85\u65f6\nexport HCCL_EXEC_TIMEOUT=73000<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.2 \u65ad\u70b9\u7eed\u8bad<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>--resume_from_checkpoint output\/Qwen3.5-4B-NPU\/vx-xxx\/checkpoint-xxx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.3 \u6570\u636e\u96c6\u52a0\u8f7d\u6162<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>--load_from_cache_file true\n--dataloader_num_workers 8\n--dataset_num_proc 64<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8c\u6b21\u52a0\u8f7d\u53ea\u9700\u51e0\u5341\u79d2\uff0c\u76f4\u63a5\u8bfb\u53d6\u7f13\u5b58\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.4 \u8bad\u7ec3\u5b8c\u7f3a\u5c11 adapter_config.json<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528 swift export \u5bfc\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>swift export \\\n  --model output\/vx-xxx\/checkpoint-xxx \\\n  --push_to_hub true \\\n  --hub_model_id '&lt;model-id&gt;' \\\n  --hub_token '&lt;sdk-token&gt;' \\\n  --use_hf false \\\n  --save_safetensors true<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6.5 \u53cc\u673a\u901a\u4fe1\u95ee\u9898<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6392\u67e5\u6b65\u9aa4\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>`ping <\u5bf9\u65b9IP>` \u68c0\u67e5\u7f51\u7edc\u4e92\u901a<\/li>\n<li>\u786e\u8ba4\u9632\u706b\u5899\u672a\u62e6\u622a `main_process_port`\uff08\u9ed8\u8ba4 29500\uff09<\/li>\n<li>\u786e\u8ba4\u5404\u8282\u70b9 `machine_rank` \u914d\u7f6e\u6b63\u786e<\/li>\n<li>\u68c0\u67e5 `HCCL_SOCKET_IFNAME` \u7f51\u5361\u540d\u79f0\u662f\u5426\u6b63\u786e<\/li>\n<li>\u589e\u5927\u8d85\u65f6\uff1a`export HCCL_CONNECT_TIMEOUT=7200`<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.6 \u955c\u50cf\u7248\u672c\u517c\u5bb9\u6027<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u786e\u8ba4 CANN \u955c\u50cf\u7248\u672c\u4e0e\u5e73\u53f0\u9a71\u52a8\/\u56fa\u4ef6\u7248\u672c\u517c\u5bb9<\/li>\n\n\n\n<li>\u786e\u8ba4 `torch_npu` \u7248\u672c\u4e0e CANN \u7248\u672c\u5339\u914d<\/li>\n\n\n\n<li>Notebook \u4e2d\u6267\u884c `npu-smi info` \u67e5\u770b\u9a71\u52a8\u7248\u672c<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u9644\u5f55\uff1a\u5feb\u901f\u547d\u4ee4\u901f\u67e5<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># ===== \u955c\u50cf\u76f8\u5173 =====\ndocker images | grep qwen3                    # \u67e5\u770b\u5df2\u6709\u955c\u50cf\ndocker ps | grep qwen3                        # \u67e5\u770b\u8fd0\u884c\u4e2d\u5bb9\u5668\ndocker commit &lt;\u5bb9\u5668\u540d&gt; &lt;\u955c\u50cf\u540d:tag&gt;             # \u4fdd\u5b58\u5bb9\u5668\u4e3a\u955c\u50cf\ndocker save -o &lt;\u6587\u4ef6\u540d.tar&gt; &lt;\u955c\u50cf\u540d:tag&gt;        # \u5bfc\u51fa\u955c\u50cf\ndocker load -i &lt;\u6587\u4ef6\u540d.tar&gt;                     # \u5bfc\u5165\u955c\u50cf\n\n# ===== NPU \u76f8\u5173 =====\nnpu-smi info                                   # \u67e5\u770b NPU \u57fa\u672c\u4fe1\u606f\nnpu-smi info watch                             # \u5b9e\u65f6\u76d1\u63a7 NPU \u4f7f\u7528\nls \/dev\/davinci*                               # \u67e5\u770b NPU \u8bbe\u5907\n\n# ===== \u8bad\u7ec3\u76f8\u5173 =====\nbash train.sh                                  # \u542f\u52a8\u8bad\u7ec3\ntail -f output\/logging.jsonl                   # \u5b9e\u65f6\u67e5\u770b\u8bad\u7ec3\u65e5\u5fd7\ngrep \"loss\" output\/logging.jsonl               # \u7b5b\u9009 loss \u8bb0\u5f55\n\n# ===== \u73af\u5883\u9a8c\u8bc1 =====\npip show ms-swift                              # \u67e5\u770b ms-swift \u7248\u672c\npip show torch_npu                             # \u67e5\u770b torch_npu \u7248\u672c\npython -c \"import torch; import torch_npu; print(torch.npu.is_available())\"<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>**\u76f8\u5173\u8d44\u6e90\uff1a** \u4e00\u3001ms-swift \u955c\u50cf\u5236\u4f5c 1.1 \u955c\u50cf\u4e0b\u8f7d \u9009\u62e9 8.5.0 \u5206\u652f\u7684 CANN \u955c\u50cf\uff1a &gt; \u955c\u50cf\u5730 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1728","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1728","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=1728"}],"version-history":[{"count":4,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1728\/revisions"}],"predecessor-version":[{"id":1732,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/posts\/1728\/revisions\/1732"}],"wp:attachment":[{"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.izhuhn.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}