【昇腾开发者训练营:Dify大模型部署实战】MindIE + Dify + DeepSeek + Embedding模型 + Rerank模型

文章目录

  • 部署 Dify
    • 1. Dify 适配 ARM
    • 2. 安装 docker
    • 3. 启动 Dify
  • MindIE+Dify 实操手册
    • 1. 基础环境搭建
      • 1.1 环境检查
      • 1.2 下载模型权重
      • 1.3 获取MindIE镜像
    • 2. 启动容器
    • 3. 纯模型推理测试
      • 3.1 纯模型对话测试
      • 3.2 性能测试
    • 4. 服务化部署
      • 4.1 MindIE 配置
      • 4.2 MindIE 服务化
      • 4.3 发起测试请求
    • 5. 接入 Dify
      • 5.1 访问 Dify
      • 5.2 配置大模型
      • 5.3 创建聊天助手
  • 进阶实操
    • 1. 环境部署
      • 1.1 下载模型权重
      • 1.2 获取镜像
    • 2. 启动容器
    • 3. 推理测试
    • 4. 接入 Dify
      • 4.1 配置模型
      • 4.2 创建知识库
    • 5. 创建聊天助手

本次我负责【昇腾开发者训练营】的【DeepSeek+Dify大模型推理部署实践】部分的讲解,需要完成PPT、实操手册、8台服务器的环境部署~

机器:Atlas800 9000 即昇腾上一代芯片 910A,8卡32G,裸金属。

可能的卡点:ARM架构上部署Dify、910A上跑MindIE、910A上跑BGE向量模型和重排序模型。

注:本文档同样适用于 Atlas800T A2(910B)、Duo卡等设备。

更好的阅读体验:点击传送门

image-20250523204934168 image-20250523204954253

部署 Dify

1. Dify 适配 ARM

git clone https://github.com/langgenius/dify.git
cd dify
git checkout 0.15.3
cd docker/
cp .env.example .env

1. 修改配置文件

vim docker-compose.yaml
# 在redis的command后添加:
--ignore-warnings ARM64-COW-BUG

image-20250523202730365

2. 修改sandbox版本

将sandbox版本从0.2.10修改为0.2.1。0.2.10版本会出现新增模型失败的情况,修改后不使用插件式的方式,可以正常添加。

2. 安装 docker

# 使用下面命令一键安装 docker 和 docker-composesudo yum install -y docker-engine docker-engine-selinux && sudo bash -c 'cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me"]
}
EOF' && sudo systemctl restart docker && sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose

3. 启动 Dify

cd dify/docker
docker-compose up -d# 停止服务并删除容器
cd dify/docker
docker-compose down

MindIE+Dify 实操手册

本文档以 Atlas 800-9000 服务器和 DeepSeek-R1-Distill-Qwen-32B-W8A8 模型为例,让开发者快速开始使用MindIE进行大模型推理流程。

MindIE(Mind Inference Engine,昇腾推理引擎)是基于昇腾硬件的运行加速、调试调优、快速迁移部署的高性能AI推理引擎。

1. 基础环境搭建

注:本次昇腾开发者训练营提供的服务器基础环境已配置完毕,本章节可忽略。

1.1 环境检查

物理机部署场景,需要在物理机安装NPU驱动固件以及部署Docker,执行如下步骤判断是否已安装NPU驱动固件和部署Docker。

执行以下命令查看NPU驱动固件是否安装。

npu-smi info

image-20250521153440553

1.2 下载模型权重

权重已下载,路径:/home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8

1.3 获取MindIE镜像

昇腾镜像仓库地址:https://www.hiascend.com/developer/ascendhub/detail/af85b724a7e5469ebd7ea13c3439d48f

进入昇腾官方镜像仓库,根据设备型号选择下载对应的MindIE镜像。该镜像已具备模型运行所需的基础环境,包括:CANN、FrameworkPTAdapter、MindIE与ATB Models,可实现模型快速上手推理。

容器内各组件安装路径:

组件安装路径
CANN/usr/local/Ascend/ascend-toolkit
CANN-NNAL-ATB/usr/local/Ascend/nnal/atb
MindIE/usr/local/Ascend/mindie
ATB Models/usr/local/Ascend/atb-models

image-20250521153010845

2. 启动容器

镜像已下载,执行以下命令启动容器。

本次课程已提供8卡服务器,建议每台服务器启动4个容器,小组内自由分配,每个容器可以使用双卡进行模型推理。

# 注:命令执行前请修改 [容器名称]
# 启动容器
docker run -itd --privileged  --name=m2 --net=host \--shm-size 500g \--device=/dev/davinci0  \--device=/dev/davinci1  \--device=/dev/davinci2  \--device=/dev/davinci3  \--device=/dev/davinci4  \--device=/dev/davinci5  \--device=/dev/davinci6  \--device=/dev/davinci7  \--device=/dev/davinci_manager \--device=/dev/hisi_hdc \--device /dev/devmm_svm \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \-v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \-v /usr/local/sbin:/usr/local/sbin \-v /etc/hccn.conf:/etc/hccn.conf \-v /home/aicc:/home/aicc \swr.cn-central-221.ovaijisuan.com/wh-aicc-fae/mindie:910A-ascend_24.1.rc3-cann_8.0.t63-py_3.10-ubuntu_20.04-aarch64-mindie_1.0.T71.05  \bash# 进入容器
docker exec -it [容器名称] /bin/bash

参数说明:

参数参数说明
–privileged特权容器,允许容器访问宿主机的所有设备。
–name设置容器名称。
–device表示映射的设备,可以挂载一个或者多个设备。需要挂载的设备如下:/dev/davinciX:NPU设备,X是ID号,如:davinci0。
/dev/davinci_manager:davinci相关的管理设备。
/dev/hisi_hdc:hdc相关管理设备。
/dev/devmm_svm:内存管理相关设备。
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro将宿主机目录“/usr/local/Ascend/driver”挂载到容器,请根据驱动所在实际路径修改。
-v /usr/local/sbin:/usr/local/sbin:ro将宿主机工具“/usr/local/sbin/”以只读模式挂载到容器中,请根据实际情况修改。
-v /path-to-weights:/path-to-weights:ro设定权重挂载的路径,需要根据用户的情况修改。说明请将权重文件和数据集文件同时放置于该路径下。

环境检查:

进入容器后,使用 npu-smi info 检查NPU驱动固件是否正常挂载。

3. 纯模型推理测试

参考文档

ATB Modelsrun_pa.py脚本用于纯模型快速测试,脚本中未增加强校验,出现异常情况时,会直接抛出异常信息,常用于快速验证模型的可用性。

3.1 纯模型对话测试

例如:使用/home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8路径下的权重,使用2卡推理"What's deep learning?""Hello World.",推理时batch size为2。

pip install pandas # 测试前安装依赖
export ASCEND_RT_VISIBLE_DEVICES=1,2 # 设置使用的卡编号
cd ${ATB_SPEED_HOME_PATH}
torchrun --nproc_per_node 2  \--master_port 20030  \-m examples.run_pa  \--model_path /home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8  \--input_texts "What's deep learning?" "Hello World."  \--max_batch_size 2# 参数说明
--nproc_per_node 使用的卡数
--input_texts 推理文本或推理文本路径,多条推理文本间使用空格分割。省略则使用默认值:"What's deep learning?"
--max_batch_size 模型推理最大batch size。

启动测试

image-20250521173349203

测试成功

image-20250521173450568

3.2 性能测试

安装依赖

pip install tiktoken  fuzzywuzzy jieba rouge # 测试前安装依赖

测试脚本

batch=1, 输入长度256, 输出长度256用例的2卡并行性能测试命令为:

export ASCEND_RT_VISIBLE_DEVICES=1,2 # 设置使用的卡编号
cd $ATB_SPEED_HOME_PATH/tests/modeltest/
bash run.sh pa_fp16 performance [[256,256]] 1 \
qwen /home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8 2

耗时结果会显示在Console中,并保存在./benchmark_result/benchmark.csv文件里。

image-20250522133144671

屏幕截图 2025-05-22 114527

4. 服务化部署

4.1 MindIE 配置

参考文档

修改MindIE配置:

vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json

主要参数

"ipAddress" : "192.168.0.10",  改为本机内网地址
"managementIpAddress" : "192.168.0.10",  改为本机内网地址()
"port" : 1025, 推理端口,请保证端口号无冲突
"managementPort" : 1026, 管理面端口,请保证端口号无冲突
"metricsPort" : 1027, 服务监控指标接口,请保证端口号无冲突
"npuDeviceIds" : [[0,1]], 表示启用哪几张卡。对于每个模型实例分配的npuIds
"modelName" : "DeepSeek-R1-Distill-Qwen-32B-W8A8", 模型名称
"modelWeightPath" : "/home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8/", 模型权重路径
"worldSize" : 2, 启用几张卡推理。本模型启用两卡推理即可

注:小组内多个MindIE服务请保证 port 不同、modelName不同

image-20250521185214880

image-20250521184923787

4.2 MindIE 服务化

首先进入mindie-service目录:

cd /usr/local/Ascend/mindie/latest/mindie-service
  • 方式一(推荐):使用后台进程方式启动服务。后台进程方式启动服务后,关闭窗口后进程也会保留。

    nohup ./bin/mindieservice_daemon > output.log 2>&1 &
    

    使用 tail 实时跟踪日志

    tail -f output.log
    

    打印如下信息说明启动成功。

    Daemon start success!
    
  • 方式二:直接启动服务。

    ./bin/mindieservice_daemon
    

    回显如下则说明启动成功。

    Daemon start success!
    

4.3 发起测试请求

参考文档

image-20250521190056832

重开一个窗口,使用以下命令发送请求:

# OpenAI 接口
curl -H "Accept: application/json" -H "Content-type: application/json" \
-X POST -d '{"model": "DeepSeek-R1-Distill-Qwen-32B-W8A8","messages": [{"role": "user","content": "You are a helpful assistant."}],"stream": false,"presence_penalty": 1.03,"frequency_penalty": 1.0,"repetition_penalty": 1.0,"temperature": 0.5,"top_p": 0.95,"top_k": 10,"seed": null,"stop": ["stop1", "stop2"],"stop_token_ids": [2, 13],"include_stop_str_in_output": false,"skip_special_tokens": true,"ignore_eos": false,"max_tokens": 20
}' http://192.168.0.10:1025/v1/chat/completions

image-20250521185820980

5. 接入 Dify

5.1 访问 Dify

根据 弹性公网IP:Dify端口 访问本机的Dify前端页面

用户名/密码:atlas@hw.com / 0atlas@hw.com

image-20250521193057237

5.2 配置大模型

  1. 点击右上角用户头像,点击“设置”
image-20250521193307435
  1. 点击“模型提供商”,搜索OpenAI-API-compatible,点击“添加模型”

image-20250521193417055

  1. 添加MindIE模型。

    模型名称:填写MindIE配置的modelName

    API endpoint URL:填写本机内网IP:MindIE配置的port/v1

image-20250521193743499

  1. 新增OpenAI-API-compatible模型

添加过OpenAI-API-compatible模型后,可在弹窗上方看到已添加的模型列,可以点击“添加模型”继续添加。添加时请避免模型名称相同。

image-20250521194346367

5.3 创建聊天助手

  1. 点击“工作室”、“创建空白应用”

image-20250521194506139

  1. 选择 “聊天助手”,输入名称,点击 “创建”

image-20250521194559695

  1. 选择模型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 对话测试

输入内容进行对话测试,接收到响应即为正确。

image-20250521194836351

进阶实操

本文档以 Atlas 800-9000 服务器为例,让开发者快速开始使用TEI进行文本嵌入(Embedding)和重排序(Reranker)模型推理流程。

TEI(全称:Text Embeddings Inference)是由Huggingface推出的高性能推理框架,旨在简化和加速文本嵌入(Embedding)和重排序(Reranker)模型在生产环境中的部署。

TEI支持基于HTTP和gRPC协议的服务接口,能够高效处理文本嵌入的生成和基于文本相关性的重排序等任务;TEI框架同时也支持多种嵌入模型和重排序模型,并提供了灵活的请求批处理、模型管理和动态调度功能。通过TEI,开发者可以轻松地扩展和优化文本嵌入和重排序服务,以满足实时应用和批量处理的需求,特别适用于自然语言处理相关的在线推理任务,能够满足RAG(全称:Retrieval-Augmented Generation)、信息检索 (IR)、自然语言理解 (NLU)、文本分类以及个性化推荐系统等下游应用场景。

原生TEI仅支持GPU硬件环境,且Python后端接口仅支持Embedding模型的embed服务。昇腾实现了基于MindIE Torch与ATB的组图优化,拓展其Python后端功能、将其适配到昇腾环境。

本次使用以下模型:

模型名说明
BAAI/bge-large-zh-v1.5稠密向量模型
BAAI/bge-m3稠密和稀疏向量模型
BAAI/bge-reranker-large排序模型

1. 环境部署

注:本次昇腾开发者训练营提供的服务器基础环境已配置完毕,本章节可忽略。

1.1 下载模型权重

权重已下载,路径:/home/aicc/bge_model

mkdir /home/aicc/bge_model
pip install modelscopemodelscope download --model  BAAI/bge-large-zh-v1.5 --local_dir /home/aicc/bge_model/bge-large-zh-v1.5
modelscope download --model  BAAI/bge-reranker-large --local_dir /home/aicc/bge_model/bge-reranker-large 
modelscope download --model  BAAI/bge-m3 --local_dir /home/aicc/bge_model/bge-m3

修改模型数据类型

修改每一个模型内部的配置项torch_dtypefloat16Atlas800 9000/300I Duo/300V Pro设备需修改。Atlas 800T A2等设备不用修改。

cd /home/aicc/bge_model
vim bge-reranker-large/config.json
vim bge-large-zh-v1.5/config.json
vim bge-m3/config.json# 修改为:
torch_dtype": "float16",

1.2 获取镜像

昇腾镜像仓库:https://www.hiascend.com/developer/ascendhub/detail/07a016975cc341f3a5ae131f2b52399d

进入昇腾官方镜像仓库,根据设备型号选择下载对应的TEI镜像,该镜像已具备模型运行所需的基础环境。

image-20250521215709556

因为本次实验的机器为910A,所以需要根据官方镜像手动修改或重新构建。本次采用的是华为山东AICC的一位老哥的镜像,下载方式:docker pull crpi-8ew3ouqcvy9yujug.cn-hangzhou.personal.cr.aliyuncs.com/sxj731533730/mis-tei_atlas_800_9000:v0

2. 启动容器

注意:

  1. 请修改本机 IP 和 端口,以下命令采用IP为192.168.0.10,端口为9000、9001、9002
  2. 修改推理卡编号:TEI_NPU_DEVICE=0 表示使用0卡推理,请修改为合适的卡号
# 启动 BAAI/bge-m3  推理容器
docker run -itd  -u root -e ENABLE_BOOST=True --privileged=true \
-e TEI_NPU_DEVICE=0 --name=bge-m3 --net=host \
-v /home/aicc/bge_model:/home/HwHiAiUser/model \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci0  \
--device=/dev/davinci1  \
--device=/dev/davinci2  \
--device=/dev/davinci3  \
--device=/dev/davinci4  \
--device=/dev/davinci5  \
--device=/dev/davinci6  \
--device=/dev/davinci7  \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
mis-tei_atlas_800_9000:v0  
# 启动服务
docker exec -it bge-m3 bash
export HOME=/home/HwHiAiUser
bash start.sh BAAI/bge-m3 192.168.0.10 9000# 启动 BAAI/bge-large-zh-v1.5  推理容器
docker run -itd  -u root -e ENABLE_BOOST=True --privileged=true \
-e TEI_NPU_DEVICE=0 --name=bge-large-zh-v1.5 --net=host \
-v /home/aicc/bge_model:/home/HwHiAiUser/model \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci0  \
--device=/dev/davinci1  \
--device=/dev/davinci2  \
--device=/dev/davinci3  \
--device=/dev/davinci4  \
--device=/dev/davinci5  \
--device=/dev/davinci6  \
--device=/dev/davinci7  \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
mis-tei_atlas_800_9000:v0  
# 启动服务
docker exec -it bge-large-zh-v1.5 bash
export HOME=/home/HwHiAiUser
bash start.sh BAAI/bge-large-zh-v1.5 192.168.0.10 9001# 启动 BAAI/bge-reranker-large  推理容器
docker run -itd  -u root -e ENABLE_BOOST=True --privileged=true \
-e TEI_NPU_DEVICE=0 --name=bge-reranker-large --net=host \
-v /home/aicc/bge_model:/home/HwHiAiUser/model \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci0  \
--device=/dev/davinci1  \
--device=/dev/davinci2  \
--device=/dev/davinci3  \
--device=/dev/davinci4  \
--device=/dev/davinci5  \
--device=/dev/davinci6  \
--device=/dev/davinci7  \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
mis-tei_atlas_800_9000:v0  
# 启动服务
docker exec -it bge-reranker-large bash
export HOME=/home/HwHiAiUser
bash start.sh BAAI/bge-reranker-large 192.168.0.10 9002# 对于800TA2、300I Duo设备无需进入容器手动启动服务。将模型名称、IP、端口作为容器启动参数,例如:
docker run -itd  -u root -e ENABLE_BOOST=True --privileged=true \
-e TEI_NPU_DEVICE=0 --name=bge-m3 --net=host \
-v /home/aicc/bge_model:/home/HwHiAiUser/model \-e POOLING=splade \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.0.RC1-800I-A2-aarch64   BAAI/bge-m3 127.0.0.1 9000

关键参数解释

  • user: 容器运行用户,可配置为root或HwHiAiUser,如果不配置默认使用HwHiAiUser,建议以普通用户HwHiAiUser运行降低容器运行相关安全风险
  • -e ASCEND_VISIBLE_DEVICES: 挂载指定的npu卡到容器中,只有宿主机安装了Ascend Docker Runtime,此环境变量才会生效,如果未安装Ascend Docker Runtime,可参考配置如下参数挂载指定的卡到容器
    --device=/dev/davinci_manager \--device=/dev/hisi_hdc \--device=/dev/devmm_svm \--device=/dev/davinci0 \--device=/dev/davinci1 \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \-v /usr/local/sbin:/usr/local/sbin:ro \
  • -e ENABLE_BOOST: 使能bert、roberta、xml-roberta类模型推理加速
  • model dir: 模型存放的上级目录,如/home/data,不能配置为/home和/home/HwHiAiUser容器内的挂载目录/home/HwHiAiUser/model不可更改
  • image id:从ascendhub网上拉取镜像后的镜像ID
  • model id:从modelscope上获取的模型ID:例如:BAAI/bge-base-zh-v1.5, BAAI/bge-reranker-large等,如需运行时下载模型,请确保网络可访问modelscope网站
  • listen ip:TEI服务的监听IP,例如:127.0.0.1
  • listen port:TEI服务的监听端口,例如:8080
  • 稀疏向量模型添加(本次实践无需添加): -e POOLING=splade,请求接口采用embed_sparse

3. 推理测试

使用以下命令进行推理测试:

curl 192.168.0.10:9000/embed \-X POST \-d '{"inputs":"What is Deep Learning?"}' \-H 'Content-Type: application/json'curl 192.168.0.10:9001/embed \-X POST \-d '{"inputs":"I like you."}' \-H 'Content-Type: application/json'curl 192.168.0.10:9002/rerank \-X POST \-d '{"query":"What is Deep Learning?", "texts": ["Deep Learning is not...", "Deep learning is..."]}' \-H 'Content-Type: application/json'

本镜像接口规范(符合TEI):
image-20250521220658643

4. 接入 Dify

4.1 配置模型

在“模型供应商”中查询Text Embedding Inference,依次添加以下参数:

API Key 需要填写,随意填写即可。

模型名称服务器URLAPI Key
bge-m3http://192.168.0.10:90001
bge-large-zh-v1.5http://192.168.0.10:90011
bge-reranker-largehttp://192.168.0.10:90021

image-20250522145103572

image-20250522145816708

4.2 创建知识库

  1. 点击“知识库”,点击“创建知识库”

image-20250522145857215

  1. 从本地选择一个文件导入:

选择文件后,点击“下一步”

image-20250522145956225

  1. 配置分段:使用默认配置无需修改

保证Embedding模型和Rerank模型设置正确,下滑到底部点击“保存并处理”

image-20250522150127643

点击“前往文档”

image-20250522150227229

  1. 可查看处理后的文件状态

image-20250522150301195

5. 创建聊天助手

  1. 点击 “创建”点击“工作室”、“创建空白应用”
  2. 选择 “聊天助手”,输入名称,

image-20250522150417770

  1. 点击添加上下文

image-20250522150526779

  1. 选择处理好的知识库

image-20250522150547478

  1. 提问

image-20250522150650686

回答正确:
image-20250522150801672

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

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

相关文章

塔能高温冰蓄冷技术:工厂能耗精准节能的创新之路

在工厂的能耗构成中&#xff0c;制冷系统是重要的耗能环节。传统的水蓄冷和冰蓄冷技术在实际应用中存在一些局限性&#xff0c;难以满足工厂对节能和成本控制的更高要求。塔能科技的高温冰蓄冷技术&#xff0c;凭借其独特的优势&#xff0c;为工厂能耗精准节能提供了创新的解决…

通过现代数学语言重构《道德经》核心概念体系,形成一个兼具形式化与启发性的理论框架

以下是对《道德经》的数学转述尝试&#xff0c;通过现代数学语言重构其核心概念&#xff0c;形成一个兼具形式化与启发性的理论框架&#xff1a; 0. 基础公理体系 定义&#xff1a; 《道德经》是一个动态宇宙模型 U(D,V,Φ)&#xff0c;其中&#xff1a; D 为“道”的无限维…

SQLMesh Typed Macros:让SQL宏更强大、更安全、更易维护

在SQL开发中&#xff0c;宏&#xff08;Macros&#xff09;是一种强大的工具&#xff0c;可以封装重复逻辑&#xff0c;提高代码复用性。然而&#xff0c;传统的SQL宏往往缺乏类型安全&#xff0c;容易导致运行时错误&#xff0c;且难以维护。SQLMesh 引入了 Typed Macros&…

5月23日day34打卡

GPU训练及类的call方法 知识点回归&#xff1a; CPU性能的查看&#xff1a;看架构代际、核心数、线程数GPU性能的查看&#xff1a;看显存、看级别、看架构代际GPU训练的方法&#xff1a;数据和模型移动到GPU device上类的call方法&#xff1a;为什么定义前向传播时可以直接写作…

集群、容器云与裸金属服务器的全面对比分析

文章目录 引言 集群 2.1 定义 2.2 特点 2.3 应用场景 容器云 3.1 定义 3.2 核心功能 3.3 应用场景 裸金属 4.1 定义 4.2 特点 4.3 应用场景 三者的区别 5.1 架构与性能 5.2 管理与运维 5.3 成本与灵活性 总结 1. 引言 在云计算和数据中心领域&#xff0c;50…

Vscode +Keil Assistant编译报错处理

Vscode Keil Assistant编译报错处理 1.报错图片内容 所在位置 行:1 字符: 25 chcp.com 65001 -Command & c:\Users\92170.vscode\extensions\cl.keil-a … ~ 不允许使用与号(&)。& 运算符是为将来使用而保留的&#xff1b;请用双引号将与号引起来(“&”)&…

Java实现中文金额转换

概述 话不多说&#xff0c;直接上代码 代码 /*** Author: hweiyu* Description: TODO* Date: 2025/5/23 11:33*/ import java.math.BigDecimal; import java.util.Scanner;public class AmountToChinese {// 中文数字字符private static final String[] NUMBERS {"零&…

Oracle 的 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 命令

Oracle 的ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 命令 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 是 Oracle Data Guard 环境中用于停止恢复过程并准备备用数据库切换为主库的关键命令。 命令用途 该命令主要用于以下场景&#xff1a; 故…

Java 依赖管理工具:使用 Sonatype Nexus 管理项目依赖

Java 依赖管理工具&#xff1a;使用 Sonatype Nexus 管理项目依赖 在 Java 开发领域&#xff0c;依赖管理是项目构建和维护过程中的关键环节。Sonatype Nexus 作为一个功能强大的依赖管理工具&#xff0c;能够有效地帮助我们管理项目的各种依赖&#xff0c;提高开发效率并降低…

编译原理 期末速成

一、基本概念 1. 翻译程序 vs 编译程序 翻译程序的三种方式 编译&#xff1a;将高级语言编写的源程序翻译成等价的机器语言或汇编语言。&#xff08;生成文件&#xff0c;等价&#xff09;解释&#xff1a;将高级语言编写的源程序翻译一句执行一句&#xff0c;不生成目标文件…

Pysnmp使用指南

1. 简介 pysnmp 是一个纯 Python 实现的 SNMP&#xff08;Simple Network Management Protocol&#xff09;库&#xff0c;支持 SNMPv1、SNMPv2c 和 SNMPv3 协议。用于&#xff1a; 查询&#xff08;GET&#xff09;和修改&#xff08;SET&#xff09;网络设备的管理信息。遍…

SHELL编程简介

1.脚本格式&#xff1a; 声明位于shell脚本的行首&#xff0c;通常形式如下&#xff1a; #!/bin/sh#!/bin/bash 其中#表示注释&#xff0c;!声明所使用的shell&#xff0c;后面为所使用shell的绝对路径。 2.常用函数 echo&#xff1a;shell输出语句&#xff0c;可不接参数…

Django 中的 ORM 基础语法

深入剖析 Django 中的 ORM 语法&#xff1a;从基础到实战进阶 在 Django 开发领域&#xff0c;ORM&#xff08;对象关系映射&#xff09;是开发者高效操作数据库的得力工具。它以简洁直观的 Python 代码&#xff0c;替代繁琐的 SQL 语句&#xff0c;极大提升了开发效率。本文将…

A10服务器使用vllm推理框架成功运行Qwen3大模型

1.下载Qwen3大模型&#xff1a; git clone https://www.modelscope.cn/Qwen/Qwen3-1.7B.git放在服务器的/mnt/workspace/Qwen3-1.7B目录下。 2.创建python虚拟环境&#xff1a; python3 -m venv venv1 source venv1/bin/activate3.安装vllm推理框架 pip install vllm 4.启动…

Disruptor—1.原理和使用简介

大纲 1.Disruptor简介 2.Disruptor和BlockingQueue的压测对比 3.Disruptor的编程模型 4.Disruptor的数据结构与生产消费模型 5.RingBuffer Disruptor Sequence相关类 6.Disruptor的WaitStrategy消费者等待策略 7.EventProcessor EventHandler等类 8.Disruptor的运行…

谷歌浏览器调试python pygui程序

谷歌浏览器地址:chrome://inspect/#devices 前端vue为8080, 配置如下 pychat 需要配置环境变量 PYTHONUNBUFFERED1;QTWEBENGINE_REMOTE_DEBUGGING9012

手写Tomcat(二)—Tomcat简化模型架构

一、 Tomcat架构 Tomcat的主要角色是 servlet容器&#xff0c;提供一个解释器&#xff0c;能够解析并执行JavaScript Object Notation (JON)脚本&#xff08;后更改为Servlet&#xff09;&#xff0c;并将请求传送到指定的服务器&#xff08;如JavaBean&#xff09;。因此&…

Android 网络全栈攻略(五)—— 从 OkHttp 拦截器来看 HTTP 协议二

上一篇我们介绍了 OkHttp 的责任链以及第一个内置拦截器 —— 重试与重定向拦截器。本篇我们将剩余四个拦截器的解析做完。 1、桥接拦截器 BridgeInterceptor 作为请求准备和实际发送之间的桥梁&#xff0c;自动处理 HTTP 请求头等繁琐工作。比如设置请求内容长度&#xff0c…

JDBC-java操作数据库

1.基本结构&#xff1a; package com.atguigu.servlets;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class JDBCemo {public static void main(String[] args) throws Exception{String url "jdbc:mysql:///mysql&qu…

七彩喜适老化改造:让每个空间成为长者尊严的守护者

随着我国老龄化进程的加速&#xff0c;居家养老逐渐成为老年人首选的生活方式。 为了让老年人能够在熟悉的环境中安享晚年&#xff0c;适老化改造应运而生。 七彩喜作为居家养老服务的创新者&#xff0c;致力于通过科学设计和人性化改造&#xff0c;为老年人提供安全、舒适、…