当前位置: 首页 > news >正文

从零开始:H20服务器上DeepSeek R1 671B大模型部署与压力测试全攻略

前言

最近,我有幸在工作中接触到了DeepSeek R1 671B模型,这是目前中文开源领域参数量最大的高质量模型之一。DeepSeek团队在2024年推出的这款模型,以其惊人的6710亿参数量和出色的推理性能,引起了业界广泛关注。

作为一名AI基础设施工程师,我有机会在H20服务器上部署这个庞然大物,并对其进行了全面的压力测试。这篇文章将详细记录我的部署过程和性能测试方法,希望能为大家提供一些参考。

💡 为什么选择DeepSeek R1?

  • 超大规模参数量(671B)
  • 优秀的中英文理解能力
  • 开源可商用的许可证
  • 在多项基准测试中表现优异

那么,如何在自己的服务器上部署这个"巨无霸"模型呢?接下来,我将分享我的完整操作流程。

一、环境准备

1.1 硬件配置

在开始部署之前,先来看看我使用的硬件配置:

  • 服务器型号:H20
  • GPU:8×NVIDIA H20 (141GB)
  • CPU:双路Intel至强处理器
  • 内存:2TB
  • 存储:高速NVMe SSD

这套配置对于部署671B参数的模型来说是刚好够用的。根据我的经验,至少需要8张高端GPU才能满足推理需求。

1.2 环境检查

首先,确认系统资源是否满足需求:

# 检查CPU信息
lscpu# 检查GPU信息
nvidia-smi# 检查内存信息
dmidecode -t memory# 检查磁盘空间
df -h

 这次试用的H20是141G显存的PCIE版本。8张GPU之间都是通过NV18(18条NVLink)互联,形成了全互联(fully connected)的网络拓扑,GPU0-3属于NUMA节点0 (CPU核心0-55,112-167),GPU4-7属于NUMA节点1 (CPU核心56-111,168-223),单卡总带宽:26.562 × 18 ≈ 478 GB/s

 

特别注意:部署DeepSeek R1 671B至少需要700GB的磁盘空间用于存储模型文件,请确保有足够空间。

1.3 软件环境配置

我选择使用Apptainer(原Singularity)作为容器运行环境,它比Docker更适合HPC场景,在多GPU协作方面表现更好。

# 安装Apptainer
sudo add-apt-repository -y ppa:apptainer/ppa
sudo apt update
sudo apt install -y apptainer# 检查安装版本
apptainer --version

二、模型获取与存储

2.1 模型下载

DeepSeek R1 671B模型可以从官方渠道下载,但文件非常大。在我的案例中,模型已预先下载并存储在 /data0/DeepSeek-R1/ 目录下。

2.2 模型完整性验证

下载完成后,务必验证模型文件的完整性:

cd /data0/DeepSeek-R1
# 验证模型文件的MD5值
md5sum model-00001-of-00163.safetensors

⚠️ 注意:模型文件可能分为多个部分,一定要验证所有文件的完整性,避免因文件损坏导致的启动失败。

三、服务部署

对于超大规模模型,我测试了两种主流的部署方式:基于vLLM和基于SGLang的部署。

3.1 基于vLLM的部署

vLLM是一个高性能的大语言模型推理引擎,专为LLM优化,支持PagedAttention等技术,内存使用效率高。

3.1.1 获取vLLM容器镜像
mkdir -p /data0/ctyun/vllm
cd /data0/ctyun/vllm
wget https://jiangsu-10.zos.ctyun.cn/galaxy/apptainer/vllm/vllm-openai_v0.7.3.sif
3.1.2 创建启动脚本
vi run.sh

在脚本中添加以下内容:

#!/bin/bash
apptainer run --nv vllm-openai_v0.7.3.sif \python3 -m vllm.entrypoints.openai.api_server \--model /data0/DeepSeek-R1 \--tensor-parallel-size 8 \--host 0.0.0.0 \--port 8000

这里的关键参数是--tensor-parallel-size 8,表示使用8卡张量并行,这对于671B规模的模型是必须的。

3.1.3 启动服务
sh run.sh

vllm服务启动成功后,每块显卡的显存已经占用了122G。 

成功启动后,vLLM会提供一个兼容OpenAI API格式的接口,默认端口为8000。

3.2 基于SGLang的部署

SGLang是另一个优秀的LLM推理框架,特别在批处理方面有一些独特优势。

3.2.1 下载SGLang容器镜像
mkdir -p /data0/ctyun/sglang
cd /data0/ctyun/sglang
wget https://jiangsu-10.zos.ctyun.cn/galaxy/apptainer/sglang/sglang_v0.4.3-cu125.sif
3.2.2 创建启动脚本并运行
vi run.sh
# 配置SGLang启动参数
#!/bin/bash# SGLang Server Startup Script
# Environment configuration
export OMP_NUM_THREADS=14
export NCCL_IB_DISABLE=1
export CUDA_VISIBLE_DEVICES="0,1,2,3,4,5,6,7"# Model configuration
CONTAINER_PATH="/data0/ctyun/sglang/sglang_v0.4.3-cu125.sif"
WORKSPACE_DIR="/data0/ctyun/sglang/workspace" 
MODELS_DIR="/data0/DeepSeek-R1"
MODEL_NAME="DeepSeek-R1"# Create workspace directory if it doesn't exist
mkdir -p "$WORKSPACE_DIR"# Server Configuration
SGLANG_HOST="0.0.0.0"
SGLANG_PORT=8000# Performance Configuration
TENSOR_PARALLEL_SIZE=8
TOKENIZER_MODE="auto"
LOG_LEVEL="info"echo "Starting SGLang server with model: $MODEL_NAME"
echo "Using GPUs: $CUDA_VISIBLE_DEVICES with TP size: $TENSOR_PARALLEL_SIZE"# Run the SGLang container with Apptainer/Singularity
# Use the LOCAL_PYTORCH_MODEL format to specify a local model
apptainer run --nv \--bind "$WORKSPACE_DIR:/workspace" \--bind "$MODELS_DIR:/model" \"$CONTAINER_PATH" \python3 -m sglang.launch_server \--model-path "/model" \--tokenizer-path "/model" \--host "$SGLANG_HOST" \--port "$SGLANG_PORT" \--tensor-parallel-size "$TENSOR_PARALLEL_SIZE" \--context-length 32768 \--mem-fraction-static 0.9 \--tokenizer-mode "$TOKENIZER_MODE" \--trust-remote-code \--log-level "$LOG_LEVEL"# 启动服务
sh run.sh

🔔 小贴士:我发现vLLM在通用场景下表现更稳定,而SGLang在批处理场景下吞吐量略高。

SGLang明显占用显存一些,模型加载完成显存已经吃得差不多了。 

四、压力测试工具准备

为了全面评估DeepSeek R1 671B的性能,我使用了三种不同的测试工具:LLMPerf、EvalScope和SGLang内置的benchmark工具。

4.1 LLMPerf测试工具安装

LLMPerf是一个专门针对大模型设计的性能测试工具:

mkdir -p /data0/ctyun/yangxian
cd /data0/ctyun/yangxian
git clone https://gitee.com/yangxianpku/llmperf.git# 设置环境变量
export HF_ENDPOINT=https://hf-mirror.com
export OPENAI_API_KEY=secret_abcdefg
export OPENAI_API_BASE="http://localhost:8000/v1/"

4.2 EvalScope测试工具安装

EvalScope是另一个功能强大的评估工具,尤其适合模拟真实用户请求:

# 创建虚拟环境
python3 -m venv evalscope
cd evalscope/
source bin/activate# 安装evalscope
pip install evalscope
pip install evalscope[perf]

4.3 SGLang测试工具安装

SGLang自带了性能基准测试工具,可以精确测量批处理性能:

python3 -m venv sglang
cd sglang/
source bin/activate
pip install "sglang[all]>=0.4.3" --find-links https://flashinfer.ai/whl/cu124/torch2.5/flashinfer-python

五、压力测试方案与结果

接下来是最激动人心的部分 - 压力测试!我设计了一系列测试场景,从单并发到高并发,从短文本到长文本生成,全方位评估模型性能。

5.1 使用LLMPerf进行吞吐量测试

首先,测试不同输入长度下的单并发性能:

# 输入8K tokens,输出1K tokens
python3 token_benchmark_ray.py --model "DeepSeek-R1" \--mean-input-tokens 8192 --stddev-input-tokens 0 \--mean-output-tokens 1024 --stddev-output-tokens 0 \--max-num-completed-requests 6 --timeout 600 \--num-concurrent-requests 1 --results-dir "result_outputs" \--llm-api openai --additional-sampling-params '{}'

然后,测试不同并发数下的性能表现:

# 64并发,输入4K tokens,输出1K tokens
python3 token_benchmark_ray.py --model "DeepSeek-R1" \--mean-input-tokens 4096 --stddev-input-tokens 0 \--mean-output-tokens 1024 --stddev-output-tokens 0 \--max-num-completed-requests 192 --timeout 600 \--num-concurrent-requests 64 --results-dir "result_outputs" \--llm-api openai --additional-sampling-params '{}'

测试结果分析:

  • 单并发下,8K输入+1K输出的场景,平均吞吐量约为750 tokens/s
  • 并发数增加到64时,总吞吐量可达2万 tokens/s左右
  • 超过128并发后,性能提升不明显,甚至可能因资源竞争而下降

5.2 使用EvalScope模拟真实用户请求

EvalScope能模拟更接近真实场景的测试,我从低并发逐步提高到高并发:

# 单并发测试
evalscope perf --parallel 1 --url http://127.0.0.1:8000/v1/chat/completions \--model DeepSeek-R1 --log-every-n-query 5 --connect-timeout 6000 \--read-timeout 6000 --max-tokens 2048 --min-tokens 2048 \--api openai --dataset openqa --number 1 --stream# 逐步提高并发
evalscope perf --parallel 192 --url http://127.0.0.1:8000/v1/chat/completions \--model DeepSeek-R1 --log-every-n-query 5 --connect-timeout 6000 \--read-timeout 6000 --max-tokens 2048 --min-tokens 2048 \--api openai --dataset openqa --number 192 --stream

测试发现:

  1. 对话模式下,流式输出(stream)的用户体验更好
  2. 并发提升到192时,延迟开始明显增加
  3. 输出token长度对吞吐量影响显著:
    • 2048 tokens输出:约10K tokens/s总吞吐量
    • 200 tokens输出:约25K tokens/s总吞吐量
    • 50 tokens输出:约35K tokens/s总吞吐量

5.3 使用SGLang测试批处理性能

SGLang特别适合测试批处理能力:

# 测试不同批处理大小
python3 -m sglang.bench_one_batch_server --model DeepSeek-R1 \--base-url http://127.0.0.1:30000 --batch-size 1 \--input-len 128 --output-len 128python3 -m sglang.bench_one_batch_server --model DeepSeek-R1 \--base-url http://127.0.0.1:30000 --batch-size 192 \--input-len 128 --output-len 128

批处理测试结果:

  • 批处理大小=1:约800 tokens/s
  • 批处理大小=32:约12K tokens/s
  • 批处理大小=192:约28K tokens/s
  • 批处理大小=512:约32K tokens/s(但延迟增加显著)

六、性能监控与调优

在测试过程中,持续监控系统资源使用情况非常重要:

# GPU监控
nvidia-smi# 系统资源监控
htop
nvtop# 进程监控
top

基于监控结果,我发现了一些性能优化的关键点:

  1. GPU利用率:在高并发场景下,GPU利用率稳定在85%-95%之间最佳
  2. CPU资源:预处理和后处理阶段会消耗大量CPU资源,建议使用高频CPU
  3. 内存使用:671B模型在8卡配置下,每卡大约需要64-70GB显存
  4. 网络带宽:高并发场景下网络可能成为瓶颈,建议使用高速网络接口

七、常见问题与解决方案

在部署过程中,我遇到了一些常见问题,分享解决方案:

7.1 资源冲突问题

如果系统中运行着其他Docker容器或进程,可能会与模型部署冲突:

# 停止Docker服务
systemctl stop docker.service
systemctl stop docker.socket# 终止占用资源的Python进程
pkill python3
kill -9 [PID]

7.2 GPU不可见问题

有时容器内无法正确识别GPU:

# 检查NVIDIA驱动与CUDA版本兼容性
nvidia-smi# 确保使用--nv参数启动Apptainer
apptainer run --nv ...

7.3 模型加载缓慢

DeepSeek R1 671B模型非常大,首次加载可能需要3-5分钟,请耐心等待。

7.4 内存溢出错误

如果出现OOM错误,可以尝试:

  • 减小batch size
  • 减小tensor_parallel_size(但可能需要更多显存)
  • 使用模型量化版本(如FP8或INT8)

八、总结与建议

经过一系列测试,我对DeepSeek R1 671B模型有了更深入的了解:

  1. 硬件需求:8张高端GPU(如H20-141G)是基本配置,内存建议1TB以上
  2. 部署方式:vLLM在通用场景更稳定,SGLang在批处理场景优势明显
  3. 并发能力:最佳并发数在128-192之间,超过这个范围性能提升不明显
  4. 响应延迟:首token延迟约1-2秒,生成速度在单请求下750-800 tokens/s
  5. 吞吐量:在最佳配置下,整体吞吐量可达30K tokens/s左右

如果你计划在生产环境部署DeepSeek R1 671B,我的建议是:

  • 使用张量并行(TP)而非流水线并行(PP)
  • 针对真实业务场景进行针对性测试和优化
  • 考虑使用模型量化技术降低资源需求
  • 实现动态批处理以提高整体吞吐量

写在最后

通过这次DeepSeek R1 671B的部署之旅,我深刻体会到大模型服务化的挑战和乐趣。希望本文能帮助更多开发者了解如何部署和测试超大规模语言模型,也欢迎在评论区分享你的经验和问题。

你是否有部署超大模型的经历?遇到了哪些挑战?欢迎在评论区讨论!


关键词: DeepSeek R1, 671B, 大模型部署, vLLM, SGLang, 压力测试, GPU, 张量并行

相关文章:

从零开始:H20服务器上DeepSeek R1 671B大模型部署与压力测试全攻略

前言 最近,我有幸在工作中接触到了DeepSeek R1 671B模型,这是目前中文开源领域参数量最大的高质量模型之一。DeepSeek团队在2024年推出的这款模型,以其惊人的6710亿参数量和出色的推理性能,引起了业界广泛关注。 作为一名AI基础…...

设计模式--spring中用到的设计模式

一、单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供全局访问点 Spring中的应用:Spring默认将Bean配置为单例模式 案例: Component public class MySingletonBean {// Spring 默认将其…...

散户如何实现自动化交易下单——篇1:体系介绍与获取同花顺资金账户和持仓信息

一、为什么要实现自动化交易 在瞬息万变的金融市场中,越来越多的散户投资者开始尝试构建自己的交易策略:有人通过技术指标捕捉趋势突破,有人利用基本面分析挖掘低估标的,还有人设计出复杂的网格交易或均值回归模型。然而&a…...

SpringBoot高校运动会管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.报名赛事代码2.用户登录代码3.保存成绩代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBoot框架开发的高校运动会管理系统项目。首先,这…...

MySQL表字段数量上限解析

MySQL 表中最多可以创建的字段数量取决于以下几个因素,主要包括 存储引擎 和 行大小限制: 1. 理论上的字段数量上限 InnoDB 存储引擎(MySQL 5.6): 最多 1017 个字段(实际测试中可能略低,需考虑行大小限制&…...

2024 ChatGPT大模型技术场景与商业应用视频精讲合集(45课).zip

2024ChatGPT大模型技术场景与商业应用视频精讲合集,共十三章,45课。 01. 第一章 ChatGPT:通用人工智能的典范 1.1 ChatGPT概述 .mp4 1.2 通用能力 .mp4 1.3 通用人工智能风口 .mp4 02. 第二章 大模型:ChatGPT的核心支撑 2.1 底层…...

FastExcel vs EasyExcel vs Apache POI:三者的全面对比分析

一、核心定位与历史沿革 Apache POI(1990s-) 作为Java生态中最古老的Excel处理库,提供对.xls/.xlsx文件的全功能支持。其核心价值在于对Excel规范的完整实现,包括单元格样式、公式计算、图表操作等深度功能。但存在内存消耗大&…...

线程控制(创建、终止、等待、分离)

目录 1.前言 2.创建线程 pthread_create函数 3.线程终止 pthread_exit函数 pthread_cancel函数 4.线程等待 5.线程分离 1.前言 在Linux系统中,并不存在真正的线程,只有轻量级进程。所以,Linux系统只提供了操作轻量级进程的系统调用…...

秒杀系统的常用架构是什么?怎么设计?

架构 秒杀系统需要单独部署,如果说放在订单服务里面,秒杀的系统压力太大了就会影响正常的用户下单。 常用架构: Redis 数据倾斜问题 第一步扣减库存时 假设现在有 10 个商品需要秒杀,正常情况下,这 10 个商品应该均…...

2025年生成式人工智能应用工程师学习线路

生成式人工智能应用工程师学习线路 初级 掌握AIGC基础概念、法律规范及安全基础、提示词使用及优化技巧,具备使用文心一言、Stable Diffsion、Midjourney等常见大模型应用进行高质量的文案、图片、视频创作的能力 课程内容包括:AIGC基础、职业道德、数…...

python力扣3:无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”…...

文生图开源模型发展史(2014-2025年)

文生图开源模型的发展历程是一段充满技术革新、社区生态繁荣与商业化竞争的多维度演进史。 一、技术萌芽期(2014-2020年) 核心突破 2014年:GAN(生成对抗网络)诞生,首次实现数据驱动式图像生成&#xff0…...

fastadmin 后台商品sku(vue)

先上个效果图 首先先引入vue define([backend], function (Backend) {require.config({paths: {vue: /assets/jeekshopskugoods/libs/vue.min,skuimg: /assets/jeekshopskugoods/js/skuimg,skugoods: /assets/jeekshopskugoods/js/skugoods,layui: /assets/LayuiSpzj/layui/la…...

Qt显示一个hello world

一、显示思路 思路一:通过图形化方式,界面上创建出一个控件显示。 思路二:通过编写C代码在界面上创建控件显示。 二、思路一实现 点开 Froms 的 widget.ui,拖拽 label 控件,显示 hello world 即可。 qmake 基于 .…...

LeetCode 热题 100 53. 最大子数组和

LeetCode 热题 100 | 53. 最大子数组和 大家好,今天我们来解决一道经典的算法题——最大子数组和。这道题在 LeetCode 上被标记为中等难度,要求我们找出一个具有最大和的连续子数组,并返回其最大和。下面我将详细讲解解题思路,并…...

需求: 使用 minio 做一个 企业微信对话的下载、存储,利用deepseek进行对话回复

以下是基于企业微信会话存档API和MinIO对象存储实现对话记录下载与存储的完整方案,涵盖技术选型、接口对接、存储配置及安全性设计等核心环节: 一、技术架构设计 系统组成: 数据采集层:通过企业微信API拉取会话存档数据&#xff0…...

vulnhub靶场之【digitalworld.local系列】的bravery靶机

前言 靶机:digitalworld.local-bravery,IP地址为192.168.10.8 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机采用virtualbox虚拟机,网卡都为桥接模式 这里官方给的有两种方式,…...

JMeter 实战项目脚本录制最佳实践(含 BadBoy 录制方式)

JMeter 实战项目脚本录制最佳实践(含 BadBoy 录制方式) 一、项目背景 在软件测试过程中,使用 JMeter 进行性能测试和功能测试是常见的操作。本实战项目将详细介绍如何使用 JMeter 自带工具以及 BadBoy 进行脚本录制,并完善脚本以…...

数据库基础五(数据库环境变量配置详细教程)

1、在小皮的设置界面检测3306端口,保障3306端口可用; 2、在小皮的首面界面,启动MySQL; 3、进行环境变量设置,找到MySQL的路径,进行复制; 4、在Windows的搜索栏内,输入“环境变量”&a…...

Matlab 大量接单

分享一个matlab接私活、兼职的平台 1、技术方向满足任一即可 2、技术要求 3、最后 技术方向满足即可 MATLAB:熟练掌握MATLAB编程语言,能够使用MATLAB进行数据处理、机器学习和深度学习等相关工作。 机器学习、深度学习、强化学习、仿真、复现、算法、…...

【算法】链表题型总结

链表题型可分为快慢指针和虚拟头节点两种解题技巧。 快慢指针 使用两个指针(快指针和慢指针),以不同的速度遍历链表,解决与链表位置、环检测相关的问题。 反转链表 快慢指针,慢指针一次走一步,快指针一次…...

【C++】对字符串的常用操作

C 中的字符串操作主要通过两种方式实现:使用 C 风格的字符串(字符数组)和使用 C 标准库中的 std::string 类型。大多数现代 C 程序使用 std::string 进行字符串处理,因为它提供了许多便捷的成员函数来处理字符串操作。以下是常见的…...

人工智能AI在汽车设计领域的应用探索

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活…...

Linux mkdir 命令

Linux mkdir(英文全拼:make directory)命令用于创建目录。 语法 mkdir [-p] dirName 参数说明: -p 确保目录名称存在,不存在的就建一个。 实例 在工作目录下,建立一个名为 runoob 的子目录 : mkdir …...

gin框架学习笔记

初始gin package mainimport "github.com/gin-gonic/gin"type Response struct {Code int json:"code"Msg string json:"msg"Data any json:"data" }func index(c *gin.Context) {c.JSON(200, Response{Code: 0,Msg: "1…...

什么是预训练语言模型下游任务?

问题:Word2Vec模型是预训练模型吗? 由于训练的特性,word2Vec模型一定是与训练模型。给定一个词先使用独热编码然后使用预训练好的Q矩阵得到这个词的词向量。这里指的是词向量本身就是预训练的语言模型。 什么是下游任务? 在自然…...

cursor 弹出在签出前,请清理仓库工作树 窗口

问题出现的背景:是因为我有两台电脑开发,提交后,另一个电脑的代码是旧的,这个时候我想拉取最新的代码,就会出现如下弹窗,因为这个代码暂存区有记录或者工作区有代码的修改,所以有冲突&#xff0…...

Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调

Ubuntu2204下使用NVIDIA GeForce RTX 4090进行DeepSeek-R1-Distill-Llama-8B模型微调 环境准备创建Python微调环境准备数据集准备模型文件 模型微调模型预测原始模型预测微调模型预测 使用unsloth,可以方便地对大模型进行微调。以微调DeepSeek-R1-Distill-Llama-8B为…...

Ubuntu20.04安装Redis

目录 切换到root用户 使用 apt install redis 安装redis 修改配置文件 ​编辑 重新启动服务器 使用Redis客户端连接服务器 切换到root用户 如果没有切换到root用户的,切换到root用户。 使用 apt install redis 安装redis 遇到y/n直接y即可。 redis安装好之…...

【Word2Vec】Skip-gram 的直观理解(深入浅出)

01 什么是skip-gram 一句话来说就是,给定中心词,然后预测其周围的词: 02 模型结构 对于skip-gram来说,输入是一个[1 x V]维的ont-hot向量,其中V为词表大小,值为1的那一项就表示我们的中心词。经过一个[V x…...

MQ 笔记

什么是消息队列? 消息队列(Message Queue, MQ)是一种用于在分布式系统中传递消息的中间件技术。 它允许应用程序通过发送和接收消息进行异步通信。 消息队列的核心思想是解耦生产者和消费者,生产者将消息发送到队列中&#xff…...

leetcode第216题组合总和Ⅲ

原题出于leetcode第216题https://leetcode.cn/problems/combination-sum-iii/description/题目为: 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表…...

【零基础C语言】第四节 数组

【零基础C语言系列】 【零基础C语言】第一节 C语言概述【数制进制码制】-CSDN博客 【零基础C语言】第二节 数据类型、运算符、表达式-CSDN博客 【零基础C语言】第三节 控制结构-CSDN博客 一、一维数组...

20250225-代码笔记03-class CVRPModel AND other class

文章目录 前言一、class CVRPModel(nn.Module):__init__(self, **model_params)函数功能函数代码 二、class CVRPModel(nn.Module):pre_forward(self, reset_state)函数功能函数代码 三、class CVRPModel(nn.Module):forward(self, state)函数功能函数代码 四、def _get_encodi…...

京准电钟快讯:NTP时钟同步服务在智造行业应用

京准电钟快讯:NTP时钟同步服务在智造行业应用 京准电钟快讯:NTP时钟同步服务在智造行业应用 一、NTP技术概述 基本原理 NTP(Network Time Protocol)是一种用于同步计算机系统时间的网络协议,通过分层时钟源&#xff…...

【Qt】详细介绍如何在Visual Studio Code中编译、运行Qt项目

Visual Studio Code一只用的顺手,写Qt的时候也能用VS Code开发就方便多了。 理论上也不算困难,毕竟Qt项目其实就是CMake(QMake的情况这里就暂不考虑了)项目,VS Code在编译、运行CMake项目还是比较成熟的。 这里笔者打…...

jsherp importItemExcel接口存在SQL注入

一、漏洞简介 很多人说管伊佳ERP(原名:华夏ERP,英文名:jshERP)是目前人气领先的国产ERP系统虽然目前只有进销存财务生产的功能,但后面将会推出ERP的全部功能,有兴趣请帮点一下 二、漏洞影响 …...

Node.js, Bun, Deno 比较概述

以下是 Node.js、Bun 和 Deno 的对比分析 概览 对比维度Node.jsDenoBun首次发布200920202022创始人Ryan DahlRyan Dahl(Node.js 原作者)Jarred Sumner运行时引擎V8(Chrome)V8(Chrome)JavaScriptCore&#…...

大白话跨域问题怎么破,解决方法有啥?

大白话跨域问题怎么破,解决方法有啥? 啥是跨域问题 咱先说说啥是跨域。你可以把每个网站想象成一个独立的小房子,每个房子都有自己的地址(也就是域名)。正常情况下,一个房子里的东西只能在这个房子里用&a…...

DeepSeek R1满血+火山引擎详细教程

DeepSeek R1满血火山引擎详细教程 一、安装Cherry Studio。 Cherry Studio AI 是一款强大的多模型 AI 助手,支持 iOS、macOS 和 Windows 平台。可以快速切换多个先进的 LLM 模型,提升工作学习效率。下载地址 https://cherry-ai.com/ 认准官网,无强制注册。 这…...

Pytorch中的ebmedding到底怎么理解?

在 PyTorch 中,nn.Embedding 是一个用于处理离散符号映射到连续向量空间的模块。它通常用于自然语言处理(NLP)任务(如词嵌入)、处理分类特征,或任何需要将离散索引转换为密集向量的场景。 核心理解 功能&am…...

【JAVA面试题】什么是面向对象?谈谈你对面向对象的理解。

【JAVA面试题】什么是面向对象?谈谈你对面向对象的理解 在 Java 面试中,面向对象 是一个高频考点。它不仅是一种编程思想,更是现代软件开发的核心方法论。本文将从 面向对象的概念、与面向过程的对比、以及 面向对象的三大特性(封…...

【C】链式二叉树算法题1 -- 单值二叉树

leetcode链接https://leetcode.cn/problems/univalued-binary-tree/description/ 1 题目描述 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1&#xff1…...

基于单片机的GPS定位系统设计

1 系统硬件 1.1单片机模块 单片机的种类和型号可以说是有成百上千种,很多大的公司和企业都生产开发自己的单片机芯片,并且广泛应用于各种产品。Intel、 philips、 摩托罗拉、凌阳、宏晶等等种类繁多。大体上可以分为51系列单片机和非51系列单片机。 其…...

[React]Render Props、自定义Hooks和Context API优化详解

关于React中的Render Props、自定义Hooks和Context API优化的详解。我需要根据我搜索到的资料来综合回答这三个部分。首先,我需要分别理解每个概念的定义、用途以及优化方法。 首先看Render Props。根据Render Props是一种通过传递函数作为prop来共享组件间逻辑的技…...

关于大型语言模型的结构修剪

本文介绍了一种名为 **LLM-Pruner** 的方法,用于对大型语言模型(LLMs)进行结构化剪枝,以减少模型大小和计算需求,同时保留其多任务解决和语言生成能力。LLM-Pruner 通过依赖检测和重要性估计实现高效剪枝,并…...

【语法】C++中string类中的两个问题及解答

贴主在学习string类时遇到过两个困扰我的问题,今天拿出来给大家分享一下我是如何解决的 一、扩容时capacity的增长问题 在string的capacity()接口中,调用的是这个string对象的容量(可以存多少个有效字符),而size()是调用的string对象现在有…...

Linux(centOS) 命令提示符格式修改(PS1)

1. 命令提示符的组成 命令提示符(PS1)通常由以下部分组成: 部分示例说明[ 和 ][...]提示符的开头和结尾,用于视觉分隔。用户名root 或 tianjiajie当前登录的用户。root 是超级用户,普通用户可能是其他名称。分隔用户…...

QwenVL 2.5-本地安装编译布署全教程

开篇 DeepSeek开源后我国又开源了一个震撼大模型,QwenVL2.5,这是一个多模态的模形,它可以认图、识图、更能作图,还能读懂video。 Qwen2.5-VL 的主要特点如下所示: 感知更丰富的世界:Qwen2.5-VL 不仅擅长识别常见物体,如花、鸟、鱼和昆虫,还能够分析图像中的文本、图表…...

Hutool - JWT:轻松玩转 JSON Web Token

各位开发者朋友们,在现代的前后端分离开发模式里,身份验证和授权可是至关重要的环节。JSON Web Token(JWT)作为一种轻量级的身份验证和授权机制,在很多项目中都得到了广泛应用。它可以在客户端和服务器之间安全地传输信…...