AES200物理机部署DeepSeek-R1蒸馏模型

AES200物理机部署DeepSeek-R1模型

华为官方官宣自己的NPU支持DeepSeek-R1模型部署,华为的大模型推理部署依托于其大模型推理引擎:MindIE,但是根据MindIE的文档,其只支持以下硬件:

表1 MindIE支持的硬件列表

类型配置参考
服务器Atlas 800I A2 推理产品
Atlas 200T A2 Box16 异构子框
推理卡Atlas 300I Duo 推理卡+Atlas 800 推理服务器(型号:3000)

而且根据华为官方发布的支持DeepSeek的docker 镜像,也需要以下硬件配置:

硬件要求

部署DeepSeek-V3模型用BF16权重进行推理至少需要4台Atlas 800I A2(864G)服务器,用W8A8量化权重进行推理则至少需要2台Atlas 800I A2 (864G)

今天我们就尝试一下,凌华智能科技有限公司发布的基于华为Ascend310P处理芯片的AES200边缘推理服务器能不能拉动DeepSeek这两大车! 开搞!!

1. 安装MindIE推理引擎

虽然根据MindIE的文档,MindIE只支持Atlas 300I Duo推理卡以上的设备,但是由于AES200采用的Ascend310P处理芯片是和Atlas 300I Duo卡采用的芯片是同一系列的芯片,按理来说MindIE也是应该能跑起来的,我们不防试试,走起!

注意:本次安装为了简单方便,我们的安装用户和运行用户都采用root账号!!!

1.1 安装方案

此次我们采用如下图所示的物理机部署方案,完成MindIE开发环境的安装。

img

1.2 准备AES200环境

这次我们在AES200上安装OpenEuler 22.03的系统版本,固件和驱动的版本如下:

软件名称分类发布日期说明
Ascend-hdk-310p-npu-firmware-soc_7.3.0.1.231.runNPU2024/07/19Atlas 200I SOC A1产品固件包(run格式)
Ascend-hdk-310p-npu-driver-soc-oe2203_24.1.rc2_linux-aarch64.runNPU2024/07/19Atlas 200I SOC A1产品ARM架构支持OpenEuler 22.03驱动包(run格式)
+--------------------------------------------------------------------------------------------------------+
| npu-smi 24.1.rc2                                 Version: 24.1.rc2                                     |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU     Name                  | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
| Chip    Device                | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
+===============================+=================+======================================================+
| 0       310P1                 | OK              | NA           27                0     / 0             |
| 0       0                     | NA              | 80           NA / 43173                              |
+===============================+=================+======================================================+

1.3 安装开发环境

MindIE与CANN版本必须配套使用,其版本配套关系如下表所示。

MindIE版本配套CANN版本
1.0.08.0.0

软件安装前,请下载下表MindIE依赖的软件包,各软件包版本号需要保持一致。

依赖软件包软件说明
CANNAscend-cann-toolkit*_{version}_linux-{arch}*.run开发套件包。
Ascend-cann-kernels-{chip_type}_{version}_linux-{arch}.run二进制算子包。
Ascend-cann-nnal*_{version}_linux-{arch}*.run加速库软件包。
ATB ModelsAscend-mindie-atb-models_{version}_linux-{arch}py*xxxtorchx.x.x*-{abi}.tar.gz模型库安装包。使用MindIE Service和MindIE LLM组件时,需要安装。
Ascend Extension for PyTorchtorch_npu-{torch_version}.post{post_id}-cpxxx-cpxxx-manylinux_{arch}.whltorch_npu插件whl包。
apex-{apex_version}_ascend-cpxxx-cpxxx-{arch}.whlApex模块的whl包。请参见《Ascend Extension for PyTorch 配置与安装》中的“(可选)安装APEX模块”章节,根据Python3.10版本自行编译。
torch-{torch_version}+cpu-cpxxx-cpxxx-linux_{arch}.whlPyTorch框架whl包。说明当前只支持1.11.0和2.1.0版本。请从《Ascend Extension for PyTorch 配置与安装》中的“安装PyTorch框架”章节获取。
1.3.1 安装依赖

根据MindIE的文档,MindIE依赖下表中的软件包

软件版本要求
glibc>=2.34,(openEuler22.03系统中glibc版本满足要求)。
gcc、g++>=11.4.0,(OpenEuler22.03系统找那个gcc,g++不满足要求),可以通过conda环境安装,或者编译安装,我这里采用Conda虚拟一个环境进行安装。
Python3.10*.x*、3.11.x,OpenEuler22.03默认带的python版本为3.9,我们这里用Conda来创建一个虚拟环境来满足对Python版本的要求。建议执行命令pip3 install --upgrade pip进行升级(pip版本需 ≤ 24.0),避免因pip版本过低导致安装失败。
gevent22.10.2
python-rapidjson>=1.6
geventhttpclient2.0.11
urllib32.1.0
greenlet3.0.3
zope.event5.0
zope.interface6.1
prettytable3.5.0
jsonschema4.21.1
jsonlines4.0.0
thefuzz0.22.1
pyarrow>=15.0.0
pydantic2.6.3
sacrebleu2.4.2
rouge_score0.1.2
pillow10.3.0
requests2.31.0
matplotlib>=1.3.0
text_generation0.7.0
numpy1.26.3
pandas2.1.4
transformers>=4.30.2,请用户根据模型选择对应版本。
tritonclient[all]-
colossalai0.4.0

安装Miniconda

$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
$ ./Miniconda3-latest-Linux-aarch64.sh #安装时选择缺失配置安装就行

创建虚拟环境

$ conda create -n mindie python=3.10
$ conda activate mindie
$ pip3 install --upgrade pip==24
$ conda install -c conda-forge gcc=11.4.0 gxx=11.4.0
$ gcc --version #检查gcc版本
$ pip3 --version #检查pip3版本呢

安装依赖pip包

将以下内容添加安装文件requirements.txt中,样例如下所示。

gevent==22.10.2
python-rapidjson>=1.6
geventhttpclient==2.0.11
urllib3>=2.1.0
greenlet==3.0.3
zope.event==5.0
zope.interface==6.1
prettytable~=3.5.0
jsonschema~=4.21.1
jsonlines~=4.0.0
thefuzz~=0.22.1
pyarrow~=15.0.0
pydantic~=2.6.3
sacrebleu~=2.4.2
rouge_score~=0.1.2
pillow~=10.3.0
requests~=2.31.0
matplotlib>=1.3.0
text_generation~=0.7.0
numpy~=1.26.3
pandas~=2.1.4
transformers>=4.30.2
tritonclient[all]
colossalai==0.4.0

在创建的mindie虚拟环境中执行以下命令进行安装

$ pip3 install -r requirements.txt
1.3.2 安装CANN

详细过程,请参照华为的《CANN 软件安装指南》中的“安装CANN软件包”章节,依据设备情况及操作系统支持情况,安装CANN开发套件包Ascend-cann-toolkit*_{version}_linux-{arch}*.run。

安装CANN依赖

在创建的conda 虚拟环境mindie下安装CANN依赖包

$ pip3 install attrs cython numpy==1.24.0 decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20 scipy requests absl-py cloudpickle  ml-dtypes tornado

安装toolkit

$ ./Ascend-cann-toolkit_8.0.0_linux-aarch64.run --install --install-for-all
# 环境变量设置
$ source /usr/local/Ascend/ascend-toolkit/set_env.sh

根据安装成功后的提示,添加source /usr/local/Ascend/ascend-toolkit/set_env.sh到/root/.bashrc中, 设置永久环境变量

安装二进制算子包

详细过程,请参照华为的《CANN 软件安装指南》中的“安装CANN软件包”章节,依据设备情况及操作系统支持情况,安装CANN二进制算子包Ascend-cann-kernels-{chip_type}_{version}_linux-{arch}.run。

$ ./Ascend-cann-kernels-310p_8.0.0_linux-aarch64.run --install --install-for-all

安装加速库

NNAL软件包中提供了面向大模型领域的ATB(Ascend Transformer Boost)加速库,实现了基于Transformer结构的神经网络推理加速引擎库,提供昇腾亲和的融合算子、通信算子、内存优化等,作为算子的公共底座提升了大模型推理性能。

$ ./Ascend-cann-nnal_8.0.0_linux-aarch64.run --install  --install-for-all
# 环境变量设置
$ source /usr/local/Ascend/nnal/atb/set_env.sh

source /usr/local/Ascend/nnal/atb/set_env.sh添加到/root/.bashrc文件中的最后一行, 设置永久环境变量

1.3.3 安装Pytorch
  • 请参见《Ascend Extension for PyTorch 配置与安装》中的“安装PyTorch框架”章节安装PyTorch框架。
  • 请参见《Ascend Extension for PyTorch 配置与安装》中的“安装torch_npu插件”章节安装torch_npu插件。

MindIE中各组件依赖PyTorch框架和torch_npu插件,依赖情况如下表所示,请用户依据实际使用需求安装。

组件名称是否需要安装PyTorch框架是否需要安装torch_npu插件
MindIE Torch必装可选
MindIE Service必装必装
MindIE LLM必装必装
MindIE SD必装必装

安装pytorch

# 下载软件包
$ wget https://download.pytorch.org/whl/cpu/torch-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
# 安装命令
$ pip3 install torch-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

安装pytorch扩展

# 下载插件包
$ wget https://gitee.com/ascend/pytorch/releases/download/v6.0.0-pytorch2.1.0/torch_npu-2.1.0.post10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
# 安装命令
$ pip3 install torch_npu-2.1.0.post10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

执行如下命令,若返回True 则说明安装成功。

python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"
1.3.4 安装ATB Models

详细过程,请参照华为的《MindIE安装指南》中的“安装ATB Models”章节。

ATB Models软件包是集成到了华为提供的MindIE推理镜像包里面,需要下载推理镜像包,运行docker启动镜像后,从/opt/package目录提取对应版本的ATB Models包。注意包有两类接包:abi0,abi1,请在你的mindie虚拟环境中使用以下指令查看abi是0还是1

python -c "import torch; print(torch.compiled_with_cxx11_abi())"

若输出结果为True表示abi1,False表示abi0,根据输出结果选择对应的abi包

$ mkdir /usr/local/Ascend/llm_model
$ tar -xzf Ascend-mindie-atb-models_1.0.0_linux-aarch64_py310_torch2.1.0-abi0.tar.gz -C /usr/local/Ascend/llm_model
# 环境变量设置
$ source /usr/local/Ascend/llm_model/set_env.sh

source /usr/local/Ascend/llm_model/set_env.sh添加到/root/.bashrc文件中的最后一行, 设置永久环境变量

安装atb-llm

$ pip3 install /usr/local/Ascend/llm_model/atb_llm-0.0.1-py3-none-any.whl

1.4 安装MindIE

1.4.1 准备安装包

MindIE软件包

名称软件包说明
MindIE软件包Ascend-mindie*_{version}_linux-{arch}*.run推理引擎软件包,主要用于用户开发基于MindIE的应用。

执行安装前请确保安装环境满足硬件环境,支持的操作系统要求,并已参照安装驱动和固件和安装开发环境章节完成开发环境的安装。执行MindIE软件包的安装,会依次安装MindIE RT、MindIE Torch、MindIE Service、MindIE LLM和MindIE SD各组件,组件包的路径在MindIE的子路径下。

1.4.2 安装步骤

执行安装程序

$ ./Ascend-mindie_1.0.0_linux-aarch64.run --install
# 环境变量设置
$ source /usr/local/Ascend/mindie/set_env.sh

source /usr/local/Ascend/mindie/set_env.sh添加到/root/.bashrc文件中的最后一行, 设置永久环境变量

1.5 配置MindIE Server

详细配置项介绍,请参照华为的《MindIE安装指南》中的“配置MindIE Server”章节的单机推理。

MindIE Server 对于Python的环境要求为Python3.10. 或者Python3.11. 此处以我的虚拟环境中Python3.10.16为例,如果环境中的Python3.10.16不是默认版本,需要参考如下方法添加环境变量到/root/.bashrc文件中(Python路径根据实际路径进行修改)。

conda activate mindie #默认激活虚拟环境
export export LD_LIBRARY_PATH=${HOME}/miniconda3/envs/mindie/lib:${HOME}/miniconda3/envs/mindie/lib/python3.10:$LD_LIBRARY_PATH

在此,我只是添加了Python的环境变量,并没有更改MindIE Server的配置项文件:config.json。这个文件可以根据不同的模型修改,我们放在模型部署时修改此文件。

2 部署DeepSeek模型

由于AES200的资源有限,肯定是不可能推理满血的DeepSeek模型的,我们采用一个蒸馏过的模型: DeepSeek-R1-Distill-Qwen-7B测试一下。

2.1 下载模型

由于模型是从huggingface官网下载,我们需要安装官方的下载工具huggingface_hub,这样更快的下载模型,注意:这里可能需要科学上网

 $ pip3 install -U huggingface_hub

下载模型文件

$ huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Llama-8B  --local-dir /home/data/datasets/DeepSeek-R1-Distill-Llama-8B 

修改模型权重config.json中torch_dtype字段为float16

修改文件的属性:

$ chmod 750 /home/data/datasets/DeepSeek-R1-Distill-Llama-8B/config.json

2.2 服务化推理

打开配置文件

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

更改配置文件

{
...
"ServerConfig" :
{
...
"port" : 1040, #自定义
"managementPort" : 1041, #自定义
"metricsPort" : 1042, #自定义
...
"httpsEnabled" : false, #测试阶段可以用开启https
...
},"BackendConfig": {
...
"npuDeviceIds" : [[0]], #因为AES200只有一个NPU
...
"ModelDeployConfig":
{
"truncation" : false,
"ModelConfig" : [
{
...
"modelName" : "qwen",
"modelWeightPath" : "/home/data/datasets/DeepSeek-R1-Distill-Llama-8B",
"worldSize" : 1, #这里的数字应和NPU的数量对应,我的测试结果结果是:如果不设置成1,执行报错。
...
}
]
},
}
}

拉起服务化

cd /usr/local/Ascend/mindie/latest/mindie-service/bin
./mindieservice_daemon

当出现Daemon start success!, 表示成功拉起服务

2025-02-09 14:27:32,109 [INFO] standard_model.py:155 - >>>rank:0 done ibis manager to device
2025-02-09 14:27:32,117 [INFO] npu_compile.py:20 - 310P,some op does not support
2025-02-09 14:27:32,118 [INFO] standard_model.py:172 - >>>rank:0: return initialize success result: {'status': 'ok', 'npuBlockNum': '2602', 'cpuBlockNum': '731', 'maxPositionEmbeddings': '131072'}
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
Daemon start success!

2.3 推理请求

当服务化推理成功后,我们就可以通过curl发送推理求来测试是否可以正常推理。

开启一个新的终端, 并运行一下命令

 time curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"model": "llama","messages": [{"role": "user","content": "我有三天的假期,我想去长沙玩玩,主要看看橘子洲头、岳麓山、博物馆,请给我做一个攻略"}],"max_tokens": 512,"presence_penalty": 1.03,"frequency_penalty": 1.0,"seed": null,"temperature": 0.5,"top_p": 0.95,"stream": false
}' http://127.0.0.1:1040/v1/chat/completions     #其中127.0.0.1以实际ip地址为准

大致的结果如下,但是感觉结果没有输出全,估计是curl请求的问题,待确认:

{"id":"endpoint_common_2","object":"chat.completion","created":1739086214,"model":"llama","choices":[{"index":0,"message":{"role":"assistant","content":"<think>\n好,我现在要帮用户制定一个三天的长沙游攻略,用户想去橘子洲头、岳麓山和博物馆。首先,我得了解这几个景点的地理位置和大致门票情况。\n\n橘子洲头在长沙市中心附近,应该不需要太多时间,可以安排第一天去那里,然后顺便看看周边的商业街,比如IFS城花园,这样比较充实。第二天可以考虑岳麓山,那里距离市区有点远,可能需要半程停车,然后坐公交或者打车前往山内景点。第三天可以集中在博物馆,比如湖南地方法院旧址和文化宫,这些都是比较著名的地方,而且都靠近市中心,方便安排。\n\n交通方面,长沙的公共交通很发达,但有些景点离市区较远的话可能需要自驾或包车。我得提醒用户注意这一点。另外,每个景点的开放时间也要确认,如果有特殊展览的话会不会影响行程。\n\n住宿的话,如果是短期旅行,可以推荐一些经济型酒店或民宿,特别是如果预算有限的话,还可以给出一些选择建议。不过,也有可能用户希望更高档,所以我就简单提一下选项吧。\n\n餐饮部分,每个地方都有一些特色美食,比如湘菜火锅、烧烤等,要让用户知道能吃到当地特色,这样他们会更满意行程。此外,还应告知他们安全带好风衣,因为四季变换时节气变化较大,不同季节防护措施不同。\n\n最后,把这些内容整合成一份清晰的攻略,让每一天都有明确的活动安排,并且尽量紧凑时间,以满足三天之内尽可能多地点游玩。\n</think>\n\n好的!以下是一个详细的大纲,将帮助你规划三日之旅:\n\n---\n\n### **第一 天:橘子洲头与城市体验**\n**上午:橘子洲头(Yueh-Lung Mountain)**\n1. **门票价格**:约60-80元  \n2. **游览路线**:\n   - 从入口进入后,可骑电车环岛观光,或步行登山至望云楼(免费)。\n","tool_calls":null},"finish_reason":"length"}],"usage":{"prompt_tokens":39,"completion_tokens":512,"total_tokens":551},"prefill_time":140,"decode_time_arr":[97,103,97,96,96,95,98,96,95,95,102,100,96,96,96,96,95,96,98,95,97,95,97,95,95,96,95,99,97,96,95,96,97,96,97,98,100,101,100,100,100,100,102,100,101,100,101,100,101,101,100,100,99,99,101,95,97,97,95,96,95,96,95,95,96,98,97,97,95,95,96,95,95,96,97,95,95,95,96,95,96,96,102,96,97,97,96,95,98,99,95,99,104,96,95,95,95,98,95,95,96,96,95,95,96,96,95,95,96,96,95,99,95,95,95,97,95,97,96,96,97,95,96,95,95,96,96,95,95,95,95,103,95,96,97,95,97,96,96,95,96,97,97,96,95,97,95,95,95,96,95,97,97,99,97,96,96,96,95,95,100,99,96,95,95,95,95,95,95,96,113,96,96,96,104,95,96,95,97,96,95,96,95,95,95,95,96,96,95,95,104,96,98,95,95,95,96,95,95,95,103,95,95,96,95,96,96,96,96,97,95,95,97,97,95,97,96,98,96,95,95,97,98,95,96,97,96,95,95,97,96,95,95,95,96,95,95,95,95,103,102,96,96,102,97,95,96,95,96,107,95,95,95,99,99,108,99,100,101,103,102,100,100,102,100,102,100,100,102,102,100,100,101,99,101,100,102,100,102,100,95,97,95,95,96,95,96,95,95,95,97,95,96,97,96,100,95,95,97,96,95,96,95,95,95,97,95,95,103,95,96,96,100,97,95,95,97,95,95,95,95,95,102,96,95,95,95,103,96,96,95,103,100,95,95,95,96,95,96,96,95,96,95,96,95,98,96,96,97,96,96,96,96,103,95,95,95,96,95,95,95,96,96,96,96,97,96,95,96,95,96,97,96,95,97,95,95,96,96,97,97,96,96,98,97,96,96,96,95,95,95,97,95,96,98,96,95,95,96,95,96,95,95,107,98,95,95,95,95,95,106,95,97,106,96,96,96,96,96,96,95,97,96,95,95,98,95,95,95,96,95,103,95,96,96,96,96,95,95,96,96,97,95,95,95,95,96,96,95,103,95,96,96,96,95,103,97,96,96,95,96,95,96,96,96,95,95,98,103,96,96,97,96,98,96,96,95,95,95,95,95,95,103,96,95,95,103,96,98,96,95,100,102,95,103,96,95,95,95,95,95,95,95,95,96,96,96,96,97,96,96]}
real    0m49.998s
user    0m0.011s
sys     0m0.017s

性能方面:

第一次开启新话题比较慢,要思考1分钟多钟,后续基于此话题在继续问问题会快一些,总体而言,也就是AES200也能跑大模型,只是速度方面稍慢,华为的库支持还需要完善!

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

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

相关文章

【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)

【后端开发】系统设计101——Devops&#xff0c;Git与CICD&#xff0c;云服务与云原生&#xff0c;Linux&#xff0c;安全性&#xff0c;案例研究&#xff08;30张图详解&#xff09; 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么&#xff1f;什么是k8s&#xff08;Ku…

正泰中间电磁继电器【8脚10A】DC24V 待机功率

需求&#xff1a;继电器能耗测试。 1.连接24V2A的电源&#xff0c; 2. 稳定功率为 1.4W 3. 正泰中间电磁继电器【8脚10A】直流DC24V 注&#xff1a;联通时电磁继电器会轻微发热 4.电磁继电器的工作原理基于电流的磁效应 电磁激励&#xff1a;电磁继电器主要由线圈、铁芯、衔…

npm无法加载文件 因为此系统禁止运行脚本

安装nodejs后遇到问题&#xff1a; 在项目里【node -v】可以打印出来&#xff0c;【npm -v】打印不出来&#xff0c;显示npm无法加载文件 因为此系统禁止运行脚本。 但是在winr&#xff0c;cmd里【node -v】,【npm -v】都也可打印出来。 解决方法&#xff1a; cmd里可以打印出…

JVM春招快速学习指南

1.说在前面 在Java相关岗位的春/秋招面试过程中&#xff0c;JVM的学习是必不可少的。本文主要是通过《深入理解Java虚拟机》第三版来介绍JVM的学习路线和方法&#xff0c;并对没有过JVM基础的给出阅读和学习建议&#xff0c;尽可能更加快速高效的进行JVM的学习与秋招面试的备战…

认识Electron 开启新的探索世界一

一、Electron轻松入门 1.搭建开发环境&#xff1a; 一般情况下开发者会使用node.js来创建electron项目&#xff0c;node.js是一个基于Chrome V8引擎的javascript运行环境&#xff0c;所以首先需要到官网去下载安装node.js 下载链接&#xff1a;https://nodejs.org/enhttps://no…

MySQL下载过程

MySQL Enterprise Edition Downloads | Oracle mysql官方下载网址&#xff08;9.2版本&#xff09; 下面的示例是5.7的包&#xff0c;过程是一样的 port&#xff1a;3308&#xff08;默认的是3306&#xff0c;笔者下了一个占用了该端口&#xff09; root&#xff1a;123456 问题…

【学术投稿】第五届计算机网络安全与软件工程(CNSSE 2025)

重要信息 官网&#xff1a;www.cnsse.org 时间&#xff1a;2025年2月21-23日 地点&#xff1a;中国-青岛 简介 第五届计算机网络安全与软件工程&#xff08;CNSSE 2025&#xff09;将于2025年2月21-23日在中国-青岛举行。CNSSE 2025专注于计算机网络安全、软件工程、信号处…

Qt:QWidget核心属性

目录 QWidget核心属性 enab geometry WindowFrame的影响 windowTitle windowIcon qrc文件管理资源 windowOpacity cursor font toolTip focusPolicy styleSheet QWidget核心属性 在Qt中使用QWidget类表示"控件"&#xff0c;如按钮、视图、输入框、滚动…

Linux TCP 编程详解与实例

一、引言 在网络编程的领域中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;协议因其可靠的数据传输特性而被广泛应用。在 Linux 环境下&#xff0c;使用 C 或 C 进行 TCP 编程可以实现各种强大的网络应用。本文将深入探讨 Linux TCP 编程的各个方面&…

论文笔记:Rethinking Graph Neural Networks for Anomaly Detection

目录 摘要 “右移”现象 beta分布及其小波 实验 《Rethinking Graph Neural Networks for Anomaly Detection》&#xff0c;这是一篇关于图&#xff08;graph&#xff09;上异常节点诊断的论文。 论文出处&#xff1a;ICML 2022 论文地址&#xff1a;Rethinking Graph Ne…

神经网络常见激活函数 6-RReLU函数

文章目录 RReLU函数导函数函数和导函数图像优缺点pytorch中的RReLU函数tensorflow 中的RReLU函数 RReLU 随机修正线性单元&#xff1a;Randomized Leaky ReLU 函数导函数 RReLU函数 R R e L U { x x ≥ 0 a x x < 0 \rm RReLU \left\{ \begin{array}{} x \quad x \ge 0…

Vue(6)

一.路由板块封装 &#xff08;1&#xff09;路由的封装抽离 目标&#xff1a;将路由板块抽离出来 好处&#xff1a;拆分板块&#xff0c;利于维护 // 路由的使用步骤 5 2 // 5个基础步骤 // 1. 下载 v3.6.5 // 2. 引入 // 3. 安装注册 Vue.use(Vue插件) // 4. 创建路由对象…

【python】matplotlib(animation)

文章目录 1、matplotlib.animation1.1、FuncAnimation1.2、修改 matplotlib 背景 2、matplotlib imageio2.1、折线图2.2、条形图2.3、散点图 3、参考 1、matplotlib.animation 1.1、FuncAnimation matplotlib.animation.FuncAnimation 是 Matplotlib 库中用于创建动画的一个…

【东莞常平】戴尔R710服务器不开机维修分享

1&#xff1a;2025-02-06一位老客户的朋友刚开工公司ERP服务器一台戴尔老服务器故障无法开机&#xff0c;于是经老客户介绍找到我们。 2&#xff1a;服务器型号是DELL PowerEdge R710 这个服务器至少也有15年以上的使用年限了。 3&#xff1a;客户反馈的故障问题为&#xff1a;…

Spring AI -使用Spring快速开发ChatGPT应用

前言 Spring在Java生态中一直占据大半江山。最近我发现Spring社区推出了一个Spring AI项目&#xff0c;目前该项目还属于Spring实验性项目&#xff0c;但是我们可以通过该项目&#xff0c;可以非常快速的开发出GPT对话应用。 本篇文章将会对SpringAI进行简单的介绍和使用&#…

经典排序算法复习----C语言

经典排序算法复习 分类 交换类 冒泡快排 分配类 计数排序基数排序 选择类 选择排序 堆排序 归并类 归并排序 插入类 直接插入排序 希尔排序 折半插入排序 冒泡排序 基于交换。每一轮找最大值放到数组尾部 //冒泡排序 void bubSort(int* arr,int size){bool sorte…

BFS解决拓扑排序(3题)

目录 拓扑排序 1.如何排序&#xff1f; 2.如何形成拓扑排序 3.如何建图 1.看数据稠密度 2. 根据算法流程灵活建图 1.课程表 2.课程表2 3.火星词典 拓扑排序 找到做事情的先后顺序&#xff0c;拓扑排序的结果可能不是唯一的 1.如何排序&#xff1f; 1.找出图中入度为…

kafka 3.5.0 raft协议安装

前言 最近做项目&#xff0c;需要使用kafka进行通信&#xff0c;且只能使用kafka&#xff0c;笔者没有测试集群&#xff0c;就自己搭建了kafka集群&#xff0c;实际上笔者在很早之前就搭建了&#xff0c;因为当时还是zookeeper&#xff08;简称ZK&#xff09;注册元数据&#…

Unity项目接入xLua的一种流程

1. 导入xlua 首先导入xlua&#xff0c;这个不用多说 2. 编写C#和Lua交互脚本 基础版本&#xff0c;即xlua自带的版本 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; using System; using System.IO;[Serializable] public…

四次挥手详解

文章目录 一、四次挥手各状态FIN_WAIT_1CLOSE_WAITFIN_WAIT_2LAST_ACKTIME_WAITCLOSE 二、双方同时调用close()&#xff0c;FIN_WAIT_1状态后进入CLOSING状态CLOSING状态 三、TIME_WAIT状态详解(1) TIME_WAIT状态下的2MSL是什么MSL &#xff08;报文最大生存时间&#xff09;为…