昇腾 910B 多机部署 DeepSeek-V3/R1 671B 满血版:从零到一的实战避坑指南

news2026/3/20 0:02:08
1. 开篇为什么你需要这份“避坑”指南最近我身边好几个团队都拿到了昇腾 910B 的服务器摩拳擦掌地想部署那个“庞然大物”——DeepSeek-V3/R1 671B 满血版。结果呢十有八九都卡在了多机部署这个环节。不是网络不通就是显存炸了要么就是配置文件对不上折腾一两个星期都跑不起来非常打击士气。我自己也踩过不少坑从驱动版本不匹配到 rank_table 文件配置错误再到容器内网络权限问题几乎把能遇到的“雷”都踩了一遍。所以我决定把这次用4台昇腾 910B 服务器每台8卡成功部署 DeepSeek-R1 671B BF16 版本的全过程以及那些官方文档里语焉不详、但实际部署中“一碰就死”的细节完完整整地记录下来。这份指南的目标很明确让你避开我踩过的所有坑用最短的时间、最稳的步骤把模型成功跑起来。无论你是 AI 工程师还是运维只要跟着步骤走就能把 671B 参数的大模型稳稳地部署在多机集群上。简单来说昇腾 910B 是国产 AI 算力的扛把子而 DeepSeek-V3/R1 671B 是目前开源领域顶尖的大语言模型之一。把它们俩结合起来意味着我们能以极具性价比的方式获得强大的推理能力。但多机部署就像指挥一个交响乐团每个乐手每张卡、每台服务器都必须精准协同一个音符错了整首曲子就垮了。接下来的内容就是这份精准的“乐谱”和“指挥手册”。2. 战前准备硬件、软件与“心态”在真正动手敲命令之前充分的准备工作能避免你半途而废。这里不仅仅是检查清单更是我多次部署后总结的“血泪经验”。2.1 硬件资源别在起跑线上摔跤官方给的建议配置是“推荐”但实测下来有些地方必须“顶配”有些则可以适当放宽。我们的目标是部署BF16 版本的 DeepSeek-R1 671B这需要4台8卡的昇腾 910B 服务器。如果你资源有限只想跑W8A8 量化版本那么2台服务器也勉强够用但性能会有折损本文主要聚焦4机32卡的满血版部署。核心硬件清单与避坑点CPU 与内存官方说64核、512GB内存以上。我强烈建议你至少翻倍。我们实测环境用了192核和2TB内存在模型加载和权重转换阶段内存占用轻松突破1TB。内存不足会导致转换过程极其缓慢甚至被系统 OOM Killer 直接杀掉进程前功尽弃。存储这是最容易低估的环节。原始 FP8 权重约 700GB转换成 BF16 后膨胀到约 1.4TB。你还需要空间存放临时文件、日志和容器镜像。我建议给模型数据盘预留至少 2.5TB 的 SSD 存储。机械硬盘想都别想光是读取权重就能让你等到天荒地老。网络这是多机协同的“生命线”。100Gbps RDMARoCE v2是刚需不是可选。我们最初尝试用 25G 网络在模型并行通信时带宽直接打满延迟飙升吞吐量惨不忍睹。RDMA 能绕过操作系统内核极大降低通信延迟这是保证 32 张卡高效协同的关键。请务必让运维同学确认网卡型号、驱动和交换机配置都支持 RoCE v2并且所有服务器的网卡 IP 在同一子网内能互相 ping 通。一个重要的检查命令拿到服务器后第一件事就是用hccn_tool检查网卡状态和IP。在每台服务器上跑一下for i in {0..7}; do hccn_tool -i $i -link -g ; done如果输出不是8个“link status: UP”那就先别往下走找硬件或网络同事解决。2.2 软件栈版本对齐是头等大事昇腾的软件生态版本耦合性很强用错了版本后面全是坑。下面这个表格是我实测可用的“黄金组合”请务必严格对照。组件要求版本获取方式与避坑提示操作系统Ubuntu 22.04 for ARM必须是 ARM 架构。x86 不行。建议使用干净的镜像避免残留旧驱动。昇腾驱动 24.1.rc3从昇腾社区下载。所有节点必须完全一致差一个小版本都可能引发灵异错误。昇腾固件 7.5.0.1.129同上所有节点一致。注意安装顺序如果是升级先固件后驱动首次安装则先驱动后固件。CANN 8.0.T63基础计算库。通常包含在 MindStudio 或 MindIE 的部署包里。MindIE 2.0.T3核心中的核心。这是昇腾的推理引擎框架。需要去昇腾社区申请专属的 Docker 镜像后面会细说。Python3.11系统自带或容器内预置均可。Docker最新稳定版用于运行 MindIE 镜像。建议配置国内镜像源加速。版本检查实操上机第一件事不是安装而是检查。在每台服务器上执行for i in {0..7}; do npu-smi info -t board -i $i | grep -E “(Software Version|Firmware Version)”; done仔细核对输出确保8张卡的驱动和固件版本都一致并且符合上表要求。不一致那就先统一再继续。2.3 系统初始化容易被忽略的“润滑剂”很多教程会跳过这一步但系统参数没调好后期可能遇到连接数不足、内存锁定失败等问题。以下命令建议在每台服务器上执行。内核参数优化主要优化网络缓冲区提升多机通信效率。sudo bash -c ‘cat /etc/sysctl.conf EOF net.core.rmem_max26214400 net.core.wmem_max26214400 net.ipv4.tcp_rmem4096 87380 26214400 net.ipv4.tcp_wmem4096 65536 26214400 EOF’ sudo sysctl -p # 使配置生效用户资源限制防止运行过程中因文件描述符或内存锁定限制导致进程崩溃。sudo bash -c ‘cat /etc/security/limits.conf EOF * soft nofile 1048576 * hard nofile 1048576 * soft memlock unlimited * hard memlock unlimited EOF’ # 注意此修改需要重新登录终端或重启系统才能生效基础工具安装安装后续需要的编译、监控工具。sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release build-essential cmake git wget vim htop iotop python3-dev python3-pip pip3 install -U pip3. 攀登“驱动与固件”这座山驱动和固件是硬件和软件对话的“语言”。语言不通一切免谈。这一步如果出错最严重的后果是设备变砖虽然概率低但很麻烦。3.1 下载认准官方渠道核对文件哈希所有驱动和固件包都必须从昇腾社区官网下载。不要从任何第三方渠道获取版本和完整性都无法保证。你需要下载两个关键文件Ascend-hdk-910b-npu-firmware_7.5.0.1.129.run固件升级包Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run驱动安装包下载后务必在本地计算一下文件的 MD5 或 SHA256 值与官网公布的值进行比对。网络传输可能导致文件损坏一个比特的错误都可能导致安装失败。3.2 升级与安装顺序是王道假设你现在是覆盖升级已有旧版本请牢记这个铁律先升级固件再安装驱动。顺序反了可能会报错。第一步升级固件# 1. 赋予执行权限 chmod x Ascend-hdk-910b-npu-firmware_7.5.0.1.129.run # 2. 强烈建议校验文件完整性 ./Ascend-hdk-910b-npu-firmware_7.5.0.1.129.run --check # 3. 执行升级需要root权限 sudo ./Ascend-hdk-910b-npu-firmware_7.5.0.1.129.run --upgrade升级过程很快看到Firmware package upgraded successfully!就成功了。此时不要重启系统。第二步安装/升级驱动# 1. 赋予执行权限 chmod x Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run # 2. 校验文件完整性 ./Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run --check # 3. 执行安装/升级 sudo ./Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run --upgrade同样等待成功的提示。完成后可以使用升级工具验证版本/usr/local/Ascend/driver/tools/upgrade-tool --device_index -1 --system_version现在重启服务器。重启后再次运行npu-smi命令确认驱动和固件版本都已更新为目标版本并且所有 NPU 卡状态正常。避坑提示务必在所有节点上完成此操作并确保重启后版本一致。我曾经因为一台机器漏了重启导致集群内版本不一致排查了整整一天。4. 获取“神器”MindIE 推理镜像DeepSeek-V3/R1 在昇腾上的推理依赖于一个叫 MindIE 的框架而最省心的方式就是使用昇腾官方提供的 Docker 镜像。这个镜像里集成了所有必要的依赖和优化。4.1 镜像申请与拉取需要一点耐心这个镜像不是公开的需要在昇腾社区Ascend Hub申请。搜索 “mindie” 和对应的版本号如 2.0.T3找到 DeepSeek-R1/V3 专用的镜像。点击申请按要求填写公司、用途等信息。审核通常需要2-4小时工作日会快一些。审核通过后你会获得镜像的拉取地址类似swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.0.T3-800I-A2-py311-openeuler24.03-lts注意拉取地址附带的临时登录密码有效期只有6小时。所以一旦通过请尽快拉取。使用 Docker 登录并拉取# 使用提供的临时账号密码登录具体命令在审核通过页面会给出 docker login swr.cn-south-1.myhuaweicloud.com # 拉取镜像 docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.0.T3-800I-A2-py311-openeuler24.03-lts镜像很大有几十GB确保磁盘空间足够并用稳定的网络。4.2 模型权重国内下载加速攻略模型权重文件是另一个“巨无霸”。官方推荐从 Hugging Face 下载但对国内用户来说速度是噩梦。这里强烈推荐魔乐社区Modelers.cn它提供了国内镜像下载速度可以达到 50MB/s 以上体验天壤之别。你需要根据部署的版本选择权重BF16 满血版4台服务器下载DeepSeek-R1-origin或DeepSeek-V3-origin的原始 FP8 权重约700GB。W8A8 量化版2台服务器下载DeepSeek-R1-W8A8或DeepSeek-V3-W8A8的量化权重。使用魔乐社区的openmind_hub工具下载是最佳实践。首先安装工具然后设置白名单路径这是安全要求最后执行下载脚本。pip install openmind_hub # 设置白名单告诉工具允许下载到哪个目录 export HUB_WHITE_LIST_PATHS“/data/models/deepseek-r1” # 创建目录 mkdir -p /data/models/deepseek-r1 cd /data/models然后创建一个 Python 脚本download.py#!/usr/bin/env python3 import os from openmind_hub import snapshot_download snapshot_download( repo_id“State_Cloud/DeepSeek-R1-origin”, # 以R1为例 local_dir“/data/models/deepseek-r1”, local_dir_use_symlinksFalse, # 不使用符号链接避免后续权限问题 )运行python download.py泡杯茶等待几个小时。务必确保目标磁盘有至少 2TB 的可用空间。4.3 模型权重转换从 FP8 到 BF16从魔乐社区下载的原始权重是 FP8 格式而昇腾 910B 需要 BF16 格式进行高效推理。因此必须进行转换。转换脚本在昇腾的 ModelZoo 仓库里。我们需要克隆这个仓库并运行转换脚本。# 克隆转换脚本仓库 git clone https://gitee.com/ascend/ModelZoo-PyTorch.git cd ModelZoo-PyTorch/MindIE/LLM/DeepSeek/DeepSeek-V2/NPU_inference # 执行转换 python fp8_cast_bf16.py \ --input-fp8-hf-path /data/models/deepseek-r1 \ --output-bf16-hf-path /data/models/deepseek-r1-bf16这是一个极其耗时的过程在我们的测试机上192核2TB内存转换 671B 模型也花了近10个小时。期间 CPU 和内存占用会很高。请确保在screen或tmux会话中运行防止终端断开导致任务终止。监控磁盘空间转换过程会产生临时文件总占用空间会超过2TB。转换完成后手动将原始权重目录中的tokenizer.model和config.json等配置文件复制到新的bf16目录中。脚本只转换权重不复制这些关键文件缺少它们模型无法加载。cp /data/models/deepseek-r1/tokenizer.model /data/models/deepseek-r1-bf16/ cp /data/models/deepseek-r1/config.json /data/models/deepseek-r1-bf16/ # 检查是否还有其他必要的配置文件如 special_tokens_map.json 等5. 多机部署核心网络与配置的“交响乐”这是整个部署过程中最复杂、最容易出错的一环。多机部署的核心在于让32张卡4台机器 x 8卡/台彼此认识、有序编号、并能高速通信。5.1 启动推理容器挂载的艺术我们需要在每台服务器上启动一个 Docker 容器容器内运行 MindIE 服务。启动命令很长但每一部分都至关重要。docker run -itd --privileged --namedeepseek-r1 --nethost \ --shm-size 500g \ --device/dev/davinci0 \ --device/dev/davinci1 \ ... (一直到davinci7) \ --device/dev/davinci_manager \ --device/dev/hisi_hdc \ --device /dev/devmm_svm \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/bin/hccn_tool:/usr/bin/hccn_tool \ ... (其他挂载) \ -v /data/models/deepseek-r1-bf16:/workspace \ swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.0.T3-800I-A2-py311-openeuler24.03-lts \ bash关键参数解读与避坑--shm-size 500g这个参数极其重要它设置了容器的共享内存大小。大模型推理需要巨大的共享内存来存放通信缓冲区默认的64MB远远不够。不设置或设置过小启动时会直接报错。--device将宿主机的 NPU 设备映射到容器内。必须把0-7卡全部映射进去。-v挂载主要是三部分1) 昇腾驱动和工具如hccn_tool,npu-smi2) 网络配置文件/etc/hccn.conf3)模型权重路径/data/models/deepseek-r1-bf16挂载到容器的/workspace。确保挂载的源路径存在且有权重文件。--nethost使用主机网络模式。这简化了容器内外网络配置让容器直接使用宿主机的IP和网络栈对于多机通信来说是最简单可靠的方式。5.2 容器内网络健康检查容器启动后进入容器docker exec -it deepseek-r1 bash在每台服务器的容器内执行一系列检查确保NPU卡之间的高速网络RoCE是通的。# 1. 检查物理链接是否都识别到了 for i in {0..7}; do hccn_tool -i $i -lldp -g | grep Ifname; done # 应该看到8个网口名称如 eth0, eth1... # 2. 检查链路状态必须全是 UP for i in {0..7}; do hccn_tool -i $i -link -g ; done # 输出应为8个 “link status: UP” # 3. 检查网络健康状态 for i in {0..7}; do hccn_tool -i $i -net_health -g ; done # 输出应为8个 “net health status: Success” # 4. 关闭TLS校验一个常见的优化项避免兼容性问题 for i in {0..7};do hccn_tool -i $i -tls -s enable 0;done如果任何一步出现DOWN或Failed说明容器内没有正确挂载驱动文件或网络配置有问题需要检查docker run命令中的-v挂载项。5.3 编写“总谱”rank_table_file.json这是多机部署的灵魂文件。它定义了整个集群的拓扑结构有多少台服务器server_count每台服务器的IPserver_id每张卡的设备IDdevice_id、卡自身的IPdevice_ip以及它在整个集群中的全局排名rank_id。配置逻辑详解server_count: 你的服务器总数我们是4。server_list: 服务器列表。第一台服务器默认为主节点rank 0所在节点。device_id: 卡在本机的编号0-7。device_ip: 这是每张NPU卡对应的RoCE网口的IP不是服务器的业务IP需要通过hccn_tool -i 0 -ip -g这样的命令在容器内查询获取。例如10.52.27.3。rank_id: 卡在整个集群中的全局唯一编号从0开始连续编号。4机32卡就是0到31。server_id: 当前服务器的业务IP例如192.168.0.2。container_ip: 容器IP。因为我们用了--nethost所以这里填和server_id一样的业务IP即可。避坑巨坑所有节点的这个文件必须完全一样我建议在一台机器上编辑好然后用scp拷贝到其他所有服务器的相同路径下例如都放在/data/models/deepseek-r1-bf16/目录里。rank_id必须连续且唯一不能重复也不能跳过。device_ip绝对不能填错填成业务IP会导致卡间无法通过高速网络通信性能暴跌甚至失败。文件编辑好后务必修改权限chmod 640 rank_table_file.json。权限不对MindIE 服务会报错无法读取。5.4 配置环境变量与推理服务在每台服务器的容器内都需要设置一系列环境变量来告诉 MindIE 如何运行。环境变量设置在容器内执行export PYTORCH_NPU_ALLOC_CONFexpandable_segments:True # 关键设置当前容器的IP即主机业务IP每台机器不一样 export MIES_CONTAINER_IP192.168.0.2 # 主机2的IP主机3则改为192.168.0.3以此类推 export RANKTABLEFILE/workspace/rank_table_file.json # rank文件在容器内的路径 export OMP_NUM_THREADS1 export NPU_MEMORY_FRACTION0.95 # 显存使用率可微调 # 以下HCCL变量用于解决多机通信超时问题非常重要 export HCCL_DETERMINISTICfalse export HCCL_OP_EXPANSION_MODE“AIV” export HCCL_CONNECT_TIMEOUT7200 export HCCL_EXEC_TIMEOUT0修改 MindIE 服务配置配置文件位于/usr/local/Ascend/mindie/latest/mindie-service/conf/config.json。需要修改几个关键字段ipAddress和managementIpAddress: 改为本机的业务IP。modelWeightPath: 改为模型权重在容器内的路径即/workspace/。在BackendConfig中确保multiNodesInferEnabled设置为true。npuDeviceIds在本机配置中填写本机的卡ID如[[0,1,2,3,4,5,6,7]]但在多机模式下这个值会被 rank_table 文件覆盖所以只要维度对就行。5.5 启动服务与验证激动人心的时刻在所有节点的容器内切换到 MindIE 服务目录并启动守护进程cd /usr/local/Ascend/mindie/latest/mindie-service ./bin/mindieservice_daemon启动顺序理论上可以同时启动。但更稳妥的做法是先在主节点rank_table 中server_list的第一个启动观察日志输出看到它在等待其他节点连接后再依次启动其他从节点。观察日志启动过程较慢可能需要10分钟以上。你会看到大量日志滚动核心是看最后有没有出现Daemon start success!。主节点的日志会额外包含模型加载的信息。如果出现错误日志会非常详细是排查问题的第一手资料。服务验证当所有节点都显示启动成功后用最简单的 curl 命令测试一下curl -X POST http://192.168.0.2:1025/v1/chat/completions \ -H “Content-Type: application/json” \ -d ‘{ “model”: “deepseekr1”, “messages”: [{“role”: “user”, “content”: “你好请介绍一下你自己。”}], “max_tokens”: 50 }’将192.168.0.2替换为你主节点的IP。如果收到一个包含生成文本的 JSON 响应那么恭喜你最艰难的部分已经过去了6. 实战避坑那些让我熬夜的“坑”与解决方案即使按照指南操作你也可能遇到一些奇怪的问题。这里是我总结的常见“坑”及其解决办法。6.1 权限错误Check path: config.json failed, by:owner id diff错误现象启动mindieservice_daemon时直接报错提示文件所有者ID不一致。原因你从宿主机挂载到容器内的模型权重目录/data/models/deepseek-r1-bf16其文件所有者owner和组group在容器内不被识别。容器内默认用户是 root但宿主机上的目录可能是另一个用户创建的。解决在宿主机上将模型权重目录的所有者改为 root。sudo chown -R root:root /data/models/deepseek-r1-bf16/然后重新启动容器。6.2 通信超时HCCL execute failed与connection fail错误现象启动日志中报错提示某两张卡device_ip之间连接超时time out。原因这是多机部署中最常见的问题。可能的原因有1) 防火墙或安全组阻断了 RoCE 网卡IP段的通信2) 网络交换机配置问题3) HCCL 通信超时时间设置太短。解决检查网络确保所有服务器的 RoCE 网卡IP即device_ip能互相 ping 通。在容器内用ping命令测试。关闭防火墙在每台宿主机上临时关闭防火墙ufw disable或systemctl stop firewalld。如果是云服务器检查安全组规则放行所有服务器之间所有端口的通信或至少放行 RoCE 使用的端口。调整环境变量这就是为什么我们在环境变量中设置了HCCL_CONNECT_TIMEOUT7200和HCCL_EXEC_TIMEOUT0将连接超时设得很长执行超时设为无限。确保这些变量已正确设置。6.3 显存不足Warm-up fail due to out of memory error错误现象服务启动在预热Warm-up阶段失败报显存不足。原因模型太大即使32张卡分摊每张卡的显存也可能不够。或者配置文件中的序列长度maxSeqLen、批处理大小maxBatchSize等参数设置过高。解决调整环境变量尝试提高NPU_MEMORY_FRACTION例如从 0.95 提高到 0.98但不要超过1.0。同时确保PYTORCH_NPU_ALLOC_CONFexpandable_segments:True已设置这允许显存动态扩展。调整服务配置编辑config.json降低maxSeqLen如从 32000 降到 16000、maxBatchSize如从 32 降到 8、maxPrefillBatchSize等参数。这些参数直接影响单次推理消耗的显存。检查量化确认你下载和转换的模型权重是否正确。如果想用2台服务器部署必须使用 W8A8 量化版本BF16 版本是绝对装不下的。6.4 Rank 文件配置错误错误现象启动失败日志提示npuDeviceID does not allow repetitive element或the size of npuDeviceIds (subset) does not equal to worldSize。原因rank_table_file.json文件配置错误。可能是rank_id重复、不连续或者server_count与实际服务器数量不符或者各节点使用的 rank 文件内容不一致。解决仔细、反复、逐字检查 rank_table_file.json 文件。用一个文本编辑器的对比工具确保四台服务器上的这个文件一模一样。检查rank_id是否从0到31每个数字只出现一次。检查device_ip是否都是正确的 RoCE 网卡IP。6.5 日志收集当问题说不清时如果遇到无法从控制台日志判断的复杂错误需要开启更详细的日志。 在启动服务前在容器内设置以下环境变量将日志输出到文件export ATB_LOG_LEVELINFO export ATB_LOG_TO_FILE1 export ASDOPS_LOG_LEVELINFO export ASDOPS_LOG_TO_FILE1 export MINDIE_LOG_TO_FILE1 export MINDIE_LOG_LEVELdebug然后重新启动服务。日志会生成在~/mindie/log/debug和~/atb/log等目录下。这些日志非常详细是定位底层算子或通信问题的关键。部署这样一个庞大的系统就像完成一项精密工程。耐心和细致是最重要的工具。按照这份指南一步步验证遇到问题对照第六章节排查你一定能成功让 DeepSeek-V3/R1 671B 在昇腾 910B 集群上奔腾起来。记住每一次失败的错误信息都是通往成功的路标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…