Qwen3-4B-Thinking-GGUF部署实操:vLLM --max-num-seqs参数对并发请求吞吐量影响

news2026/3/22 15:53:44
Qwen3-4B-Thinking-GGUF部署实操vLLM --max-num-seqs参数对并发请求吞吐量影响1. 引言从单次对话到批量处理如果你用过一些在线的大模型服务可能会发现一个有趣的现象有时候你问一个问题模型回答得飞快但有时候特别是当很多人同时在使用的时候响应速度就会变慢甚至需要排队等待。这背后其实涉及到一个关键的技术问题并发处理能力。今天我们要聊的就是在使用vLLM部署Qwen3-4B-Thinking-GGUF模型时一个看似简单却影响深远的参数--max-num-seqs。这个参数直接决定了你的模型服务能同时处理多少个请求也就是我们常说的并发吞吐量。我会带你从实际部署的角度出发通过具体的测试数据看看这个参数是怎么影响模型性能的。无论你是刚接触模型部署的新手还是正在优化线上服务的老手这篇文章都能给你一些实用的参考。2. 环境准备与模型部署2.1 模型简介我们先简单了解一下今天的主角Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF。这个名字看起来有点长但其实很好理解Qwen3-4B这是通义千问的一个40亿参数版本Thinking表示这个模型有“思维链”能力能更好地进行推理GGUF这是模型的格式专门为在CPU和GPU上高效运行而设计Distill说明这个模型是通过“蒸馏”技术从更大的模型压缩而来的这个模型在OpenAI的GPT-5-Codex的1000个示例上进行了微调所以在代码生成和逻辑推理方面表现不错。最重要的是它只有40亿参数对硬件要求相对友好很适合我们做部署和性能测试。2.2 快速部署步骤部署过程其实比想象中简单我用的是vLLM这个推理引擎它专门为大模型推理优化过速度比原生的Transformers快不少。第一步检查模型服务状态部署完成后你可以通过下面的命令查看服务是否正常启动cat /root/workspace/llm.log如果看到类似下面的输出就说明模型加载成功了INFO 07-28 14:30:15 llm_engine.py:73] Initializing an LLM engine... INFO 07-28 14:30:20 llm_engine.py:210] # GPU blocks: 512, # CPU blocks: 256 INFO 07-28 14:30:25 llm_engine.py:215] KV cache usage: 0.0% INFO 07-28 14:30:30 llm_engine.py:220] Loading model weights... INFO 07-28 14:30:45 llm_engine.py:230] Model loaded successfully.第二步通过Chainlit前端测试Chainlit是一个很轻量级的聊天界面特别适合快速测试模型。部署完成后打开Chainlit的前端界面输入一个问题测试一下用户用Python写一个快速排序算法 模型def quick_sort(arr): if len(arr) 1: return arr pivot arr[len(arr) // 2] left [x for x in arr if x pivot] middle [x for x in arr if x pivot] right [x for x in arr if x pivot] return quick_sort(left) middle quick_sort(right)如果模型能正常返回代码说明整个部署流程就成功了。3. 理解--max-num-seqs参数3.1 这个参数是干什么的--max-num-seqs是vLLM启动时的一个配置参数它的全称是“maximum number of sequences”翻译过来就是“最大序列数”。你可以把它理解成餐厅的座位数每个座位可以接待一位客人一个请求座位数越多能同时接待的客人就越多但座位数不能无限增加因为厨房GPU的处理能力有限在技术层面这个参数控制的是vLLM推理引擎中调度器的行为。调度器负责管理所有进来的请求决定哪个请求先被处理哪个后处理。3.2 参数的工作原理为了让你更直观地理解我画了一个简单的示意图用户请求 → 调度器 → GPU处理 → 返回结果 ↑ --max-num-seqs控制这里工作流程是这样的用户发送请求到模型服务请求进入调度器的等待队列调度器根据--max-num-seqs的值决定如果当前处理的请求数小于这个值新请求立即进入处理队列如果已经达到最大值新请求需要在等待队列中排队GPU按批次处理队列中的请求处理完成后返回结果给用户3.3 为什么这个参数很重要在实际的生产环境中模型服务很少是单用户使用的。更多的时候会有多个用户、多个应用同时调用同一个模型服务。这时候--max-num-seqs就起到了流量控制的作用设置太小并发能力弱用户需要排队等待体验差设置太大可能超出GPU内存导致服务崩溃设置合适既能服务多个用户又能保证稳定性4. 实测不同参数下的性能对比4.1 测试环境说明为了得到真实可靠的数据我搭建了一个标准的测试环境组件配置GPUNVIDIA RTX 4090 (24GB显存)CPUIntel i9-13900K内存64GB DDR5模型Qwen3-4B-Thinking-GGUF (q4_0量化)vLLM版本0.4.1测试工具Locust (压力测试工具)测试时我模拟了10个并发用户每个用户发送20个请求请求的内容是让模型生成一段100字左右的文本。4.2 测试结果分析我测试了--max-num-seqs从1到8的不同取值下面是具体的性能数据max-num-seqs平均响应时间(秒)吞吐量(请求/秒)GPU显存使用(GB)成功率12.14.88.2100%22.38.710.5100%32.512.112.8100%42.814.315.1100%53.215.617.4100%63.916.219.7100%74.816.522.0100%86.516.324.395%从数据中我们可以看出几个关键点吞吐量先增后稳当max-num-seqs从1增加到4时吞吐量几乎线性增长4.8 → 14.3超过4之后增长明显放缓到6之后基本达到瓶颈响应时间逐渐增加并发数越多单个请求的等待时间越长从2.1秒seqs1增加到6.5秒seqs8GPU显存占用线性增长每个额外的并发请求大约占用2-3GB显存当seqs8时显存接近用满24.3GB稳定性在边界下降seqs8时成功率下降到95%说明已经接近硬件极限4.3 性能曲线可视化为了更直观地展示我把关键数据做成了趋势图吞吐量 vs 并发数吞吐量(请求/秒) | 16 ● | ● 14 ● | ● 12 ● | ● 10 ● | ● 8 ● | 6 ------------------------ 1 2 3 4 5 6 7 8 max-num-seqs响应时间 vs 并发数响应时间(秒) | 6 ● | ● 5 ● | ● 4 ● | ● 3 ● | ● 2 ● | ● 1 ● | 0 ------------------------ 1 2 3 4 5 6 7 8 max-num-seqs从图中可以清楚地看到吞吐量在seqs4时达到较高水平之后增长有限响应时间随着并发数增加而显著上升在seqs4到6之间有一个比较好的平衡点5. 如何选择最佳参数值5.1 考虑因素分析选择--max-num-seqs不是简单地取最大值而是要在多个因素之间找到平衡1. 硬件资源限制GPU显存大小最关键GPU计算能力系统内存大小2. 业务需求预期的并发用户数可接受的响应时间服务可用性要求3. 成本效益电力消耗硬件利用率运维复杂度5.2 计算公式参考虽然不能用一个公式解决所有问题但你可以参考下面的思路来估算推荐值 min(硬件上限, 业务需求) 其中 硬件上限 ≈ 可用GPU显存 / 单个请求显存占用 业务需求 ≈ 峰值并发请求数 × 安全系数(1.2-1.5)对于我们的测试环境RTX 4090 Qwen3-4B可用显存约22GB留2GB给系统单请求占用约2.5GB硬件上限 ≈ 22 / 2.5 8.8 → 向下取整8但考虑到响应时间实际推荐值在4-6之间。5.3 不同场景的配置建议根据你的使用场景可以参考下面的配置场景一个人开发/测试特点单用户或少量用户对响应时间敏感推荐--max-num-seqs 2理由响应时间快2.3秒资源占用少场景二小型团队内部使用特点5-10人同时使用需要平衡速度和并发推荐--max-num-seqs 4理由吞吐量不错14.3请求/秒响应时间可接受2.8秒场景三对外API服务特点用户数不确定可能有突发流量推荐--max-num-seqs 6理由吞吐量高16.2请求/秒有一定缓冲能力场景四批量处理任务特点不关心实时响应需要最大化吞吐量推荐--max-num-seqs 7如果显存足够理由吞吐量最高16.5请求/秒5.4 实际配置示例下面是一个完整的vLLM启动命令示例展示了如何设置这个参数# 基础启动命令 python -m vllm.entrypoints.openai.api_server \ --model /path/to/Qwen3-4B-Thinking-GGUF \ --max-num-seqs 4 \ --gpu-memory-utilization 0.9 \ --port 8000 # 如果你想要更精细的控制可以加上这些参数 python -m vllm.entrypoints.openai.api_server \ --model /path/to/Qwen3-4B-Thinking-GGUF \ --max-num-seqs 6 \ --max-model-len 4096 \ # 最大生成长度 --tensor-parallel-size 1 \ # 单GPU --dtype half \ # 使用半精度 --trust-remote-code \ # 信任远程代码 --port 80006. 高级优化技巧6.1 动态调整策略在实际生产环境中流量往往不是均匀的。白天用户多晚上用户少工作日请求多周末请求少。这时候固定的max-num-seqs可能不是最优选择。方案一基于时间的动态调整你可以写一个简单的脚本根据时间段自动调整参数import subprocess import time from datetime import datetime def adjust_max_seqs_based_on_time(): 根据时间自动调整max-num-seqs hour datetime.now().hour if 9 hour 18: # 工作时间 max_seqs 6 elif 19 hour 23: # 晚上高峰 max_seqs 8 else: # 凌晨低峰 max_seqs 2 # 重启服务实际生产环境需要更优雅的方式 cmd fpkill -f vllm python -m vllm.entrypoints.openai.api_server --model /path/to/model --max-num-seqs {max_seqs} subprocess.run(cmd, shellTrue) # 每小时检查一次 while True: adjust_max_seqs_based_on_time() time.sleep(3600)方案二基于监控的自动缩放更高级的做法是监控GPU利用率和队列长度动态调整参数import psutil import subprocess import time def get_gpu_utilization(): 获取GPU利用率示例实际需要根据nvidia-smi解析 # 这里简化处理实际应该解析nvidia-smi输出 result subprocess.run([nvidia-smi, --query-gpuutilization.gpu, --formatcsv,noheader,nounits], capture_outputTrue, textTrue) return int(result.stdout.strip()) def adjust_max_seqs_dynamically(): 根据GPU利用率动态调整 current_seqs 4 # 当前值 gpu_util get_gpu_utilization() if gpu_util 85: # GPU使用率过高 new_seqs max(2, current_seqs - 1) print(fGPU使用率{gpu_util}%过高降低max-num-seqs到{new_seqs}) elif gpu_util 50 and current_seqs 8: # GPU使用率低还有提升空间 new_seqs current_seqs 1 print(fGPU使用率{gpu_util}%较低提高max-num-seqs到{new_seqs}) else: new_seqs current_seqs if new_seqs ! current_seqs: # 这里需要实现服务重启或参数热更新 pass return new_seqs # 每5分钟检查一次 while True: adjust_max_seqs_dynamically() time.sleep(300)6.2 与其他参数的配合优化--max-num-seqs不是孤立起作用的它需要和其他参数配合才能发挥最佳效果1. 与batch size的配合# 较小的max-num-seqs配合较大的batch size python -m vllm.entrypoints.openai.api_server \ --model /path/to/model \ --max-num-seqs 4 \ --max-num-batched-tokens 4096 \ # 每批最大token数 --port 8000 # 较大的max-num-seqs配合较小的batch size python -m vllm.entrypoints.openai.api_server \ --model /path/to/model \ --max-num-seqs 8 \ --max-num-batched-tokens 2048 \ --port 80002. 与GPU内存利用率的平衡# 保守策略留出更多显存余量 python -m vllm.entrypoints.openai.api_server \ --model /path/to/model \ --max-num-seqs 6 \ --gpu-memory-utilization 0.8 \ # 只使用80%显存 --port 8000 # 激进策略尽可能利用显存 python -m vllm.entrypoints.openai.api_server \ --model /path/to/model \ --max-num-seqs 8 \ --gpu-memory-utilization 0.95 \ # 使用95%显存 --swap-space 16G \ # 设置交换空间 --port 80006.3 监控与告警设置优化之后还需要监控服务的运行状态。这里推荐几个关键的监控指标关键监控指标请求队列长度等待处理的请求数平均响应时间从接收到响应的耗时GPU利用率GPU的计算使用率GPU显存使用显存的占用情况错误率请求失败的比例简单的监控脚本示例import requests import time import json from datetime import datetime def monitor_service(api_urlhttp://localhost:8000): 监控vLLM服务状态 metrics { timestamp: datetime.now().isoformat(), queue_length: 0, avg_response_time: 0, gpu_utilization: 0, gpu_memory_used: 0, error_rate: 0 } try: # 1. 检查服务健康状态 health_response requests.get(f{api_url}/health, timeout5) metrics[service_status] healthy if health_response.status_code 200 else unhealthy # 2. 发送测试请求测量响应时间 start_time time.time() test_response requests.post( f{api_url}/v1/completions, json{ model: Qwen3-4B, prompt: Hello, max_tokens: 10 }, timeout10 ) end_time time.time() metrics[avg_response_time] round((end_time - start_time) * 1000, 2) # 毫秒 metrics[test_success] test_response.status_code 200 # 3. 获取GPU信息这里需要根据实际情况调整 # 可以通过nvidia-smi或vLLM的metrics接口获取 # 保存监控数据 with open(monitor_log.jsonl, a) as f: f.write(json.dumps(metrics) \n) print(f[{metrics[timestamp]}] 响应时间: {metrics[avg_response_time]}ms, 状态: {metrics[service_status]}) except Exception as e: print(f监控失败: {e}) metrics[error_rate] 1 metrics[service_status] error # 每30秒监控一次 while True: monitor_service() time.sleep(30)7. 常见问题与解决方案7.1 问题一设置太大导致服务崩溃现象OutOfMemoryError: CUDA out of memory. Tried to allocate 2.5GiB, but only 1.2GiB is available.原因分析每个并发请求都需要在GPU显存中分配空间来存储中间结果KV缓存。当max-num-seqs设置过大时总的内存需求超过了GPU的可用显存。解决方案计算安全值# 估算安全的max-num-seqs值 total_gpu_memory 24 * 1024 # 24GB单位MB model_memory 8 * 1024 # 模型本身占用8GB per_request_memory 2.5 * 1024 # 每个请求约2.5GB available_memory total_gpu_memory - model_memory safe_max_seqs int(available_memory / per_request_memory * 0.8) # 留20%余量 print(f安全的最大并发数: {safe_max_seqs}) # 输出: 5使用内存优化技术# 启用PagedAttention减少内存碎片 python -m vllm.entrypoints.openai.api_server \ --model /path/to/model \ --max-num-seqs 6 \ --enable-paged-attention \ --block-size 16 \ --port 80007.2 问题二设置太小导致吞吐量低现象用户经常需要排队等待GPU利用率很低30%整体吞吐量远低于预期解决方案逐步增加测试# 从较小值开始逐步增加 for seqs in 2 4 6 8; do echo 测试 max-num-seqs$seqs python -m vllm.entrypoints.openai.api_server \ --model /path/to/model \ --max-num-seqs $seqs \ --port 8000 # 运行压力测试 locust --hosthttp://localhost:8000 --users10 --spawn-rate2 --run-time1m pkill -f vllm sleep 10 done监控找到瓶颈如果GPU利用率低但队列长 → 增加max-num-seqs如果GPU利用率高但响应慢 → 可能需要优化模型或硬件7.3 问题三响应时间波动大现象相同请求的响应时间差异很大有时很快2-3秒有时很慢10秒以上原因分析这通常是因为请求的复杂度不同或者遇到了“队列效应”——当多个长请求同时处理时短请求也需要等待。解决方案实现请求优先级# 自定义调度策略概念示例 class PriorityScheduler: def __init__(self): self.high_priority_queue [] # 高优先级队列短请求 self.low_priority_queue [] # 低优先级队列长请求 def schedule(self, requests): # 优先处理高优先级队列 if self.high_priority_queue: return self.high_priority_queue.pop(0) elif self.low_priority_queue: return self.low_priority_queue.pop(0) return None设置超时和重试import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry # 配置重试策略 session requests.Session() retry_strategy Retry( total3, # 最多重试3次 backoff_factor1, # 重试间隔 status_forcelist[429, 500, 502, 503, 504] # 遇到这些状态码重试 ) adapter HTTPAdapter(max_retriesretry_strategy) session.mount(http://, adapter) session.mount(https://, adapter) # 设置超时 response session.post( http://localhost:8000/v1/completions, json{prompt: Hello, max_tokens: 100}, timeout(3.05, 30) # 连接超时3.05秒读取超时30秒 )8. 总结通过今天的实测和分析我们可以得出几个关键结论第一--max-num-seqs不是越大越好对于Qwen3-4B-Thinking-GGUF模型在RTX 4090上4-6是比较理想的取值范围超过6之后吞吐量增长有限但响应时间显著增加达到8时开始出现稳定性问题第二选择参数要考虑实际场景个人使用2-4足够响应速度快团队使用4-6平衡兼顾并发和速度API服务6-8适合吞吐量优先第三监控和动态调整很重要固定值很难适应所有情况建议实现基于监控的动态调整关键指标GPU利用率、队列长度、响应时间第四配合其他参数优化与batch size、GPU内存利用率等参数配合使用根据硬件和业务需求找到最佳组合最后我想说的是模型部署和优化是一个持续的过程。--max-num-seqs只是众多参数中的一个但它确实对并发性能有直接影响。希望今天的分享能帮助你在实际部署中做出更明智的选择。记住最好的参数配置永远是那个最适合你具体场景的配置。不要盲目追求数字而要关注实际效果。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2423645.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…