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.pswp.cn/news/895119.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895119.shtml
英文地址,請注明出處:http://en.pswp.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;電磁繼電器主要由線圈、鐵芯、銜…

計算機視覺核心任務

1. 計算機視頻重要分類 計算機視覺的重要任務可以大致分為以下幾類&#xff1a; 1. 圖像分類&#xff08;Image Classification&#xff09; 識別圖像屬于哪個類別&#xff0c;例如貓、狗、汽車等。 應用場景&#xff1a;物品識別、人臉識別、醫療影像分類。代表模型&#…

責任鏈模式(Chain Responsibility)

一、定義&#xff1a;屬于行為型設計模式&#xff0c;包含傳遞的數據、創建處理的抽象和實現、創建鏈條、將數據傳遞給頂端節點&#xff1b; 二、UML圖 三、實現 1、需要傳遞處理的數據類 import java.util.Date;/*** 需要處理的數據信息*/ public class RequestData {priva…

MFC 基礎

windows桌面應用分為兩種類型&#xff1a; 基于文檔視圖類型 和 基于對話框類型。 通常具有復雜交互控件的程序即為基于對話框類型&#xff0c;相對而言比較復雜&#xff0c;而基于文檔視圖類的應用交互形式比較單一&#xff0c;相對簡單。下面給出基于mfc框架的最基本的桌面程…

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的學習與秋招面試的備戰…

DeepSeek API 調用 - Spring Boot 實現

DeepSeek API 調用 - Spring Boot 實現 1. 項目依賴 在 pom.xml 中添加以下依賴&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></depe…

認識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 編程的各個方面&…

原生redis實現分布式鎖

用 原生 Redis&#xff08;Jedis、Lettuce&#xff09; 實現分布式鎖&#xff0c;可以參考 Redisson 的原理&#xff0c;但需要自己處理鎖的自動續期、故障恢復等細節。核心思路是使用 Redis 的 SET NX EX 或 SET PX NX 命令來實現互斥鎖&#xff0c;并利用 Lua 腳本 保障原子性…

論文筆記: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進行簡單的介紹和使用&#…