基于vLLM与OpenAI API的LLM生产部署框架实战指南

news2026/5/17 2:13:34
1. 项目概述一个面向生产环境的LLM部署框架最近在折腾大语言模型LLM的部署发现了一个挺有意思的项目run-llama/llama_deploy。这名字乍一看可能会让人以为它只是用来部署Meta的Llama系列模型的但实际上它是一个野心更大的工具——一个旨在将任意开源大语言模型LLM快速、稳定地部署到生产环境的框架。简单来说它想解决的是从“模型文件”到“可调用API服务”这条路上所有令人头疼的工程化问题。我自己在尝试把一些7B、13B甚至更大参数的模型放到线上服务时踩过不少坑。比如如何高效地加载模型、如何管理GPU内存、如何设计一个兼顾吞吐量和延迟的API、如何做请求的批处理batching、如何监控服务状态等等。这些工作繁琐且重复而llama_deploy的出现就是为了把这些脏活累活打包起来提供一个“开箱即用”的解决方案。它特别适合那些专注于模型微调或应用开发但不想在底层服务架构上投入过多精力的团队和个人开发者。接下来我就结合自己的使用和探索把这个项目的里里外外拆解一遍。2. 核心架构与设计哲学2.1 为什么需要专门的LLM部署框架在深入llama_deploy之前我们先得搞清楚一个问题用FastAPItransformers库写个简单的模型加载和推理脚本不也能提供API吗确实可以但对于生产环境这远远不够。生产级部署至少要考虑以下几个维度性能与资源效率如何实现动态批处理Dynamic Batching单个请求来时立即推理会造成GPU利用率低下等待多个请求一起推理又会增加单个请求的延迟。如何平衡如何支持持续批处理Continuous Batching以优化长文本生成llama_deploy内置了vLLM这样的高性能推理引擎作为核心选项之一就是为了解决这些问题。可扩展性与高可用服务如何水平扩展如何做负载均衡模型权重是每个实例都加载一份浪费显存还是共享框架需要提供部署模式和最佳实践。运维与监控服务健康状态如何检查如何收集并暴露推理延迟、吞吐量、错误率等指标如何集成到现有的PrometheusGrafana监控体系中标准化与易用性如何提供统一的API接口通常兼容OpenAI API格式让上游应用无需为每个模型调整调用方式如何简化配置通过一个配置文件就能定义模型路径、推理参数、服务端口等llama_deploy的设计哲学就是直面这些挑战它不是一个简单的脚本合集而是一个考虑了全生命周期的部署框架。2.2 技术栈选型与核心组件llama_deploy没有重复造轮子而是站在了巨人的肩膀上集成了一系列业界成熟且高性能的组件。理解它的技术栈是用好它的关键。核心推理引擎vLLM这是当前高性能LLM推理的“当红炸子鸡”。它通过PagedAttention等关键技术极大地优化了KV Cache的内存管理从而在相同硬件下能支持更高的并发、更长的上下文长度并原生支持持续批处理。llama_deploy将vLLM作为首选后端之一意味着你能直接享受到这些性能红利。Transformers (with TGI)对于vLLM尚未完美支持的一些模型架构或特殊需求项目也支持使用Hugging Face的transformers库。同时它可以与TensorRT-LLM或Text Generation Inference (TGI) 等工具结合进一步优化性能。API服务层通常基于FastAPI构建提供RESTful API接口。最关键的是其API设计会努力与OpenAI API格式兼容。这意味着你的服务一旦部署好客户端代码可以几乎无缝地从调用ChatGPT切换到调用你自己的私有模型大大降低了应用层的适配成本。配置与生命周期管理项目会提供清晰的配置文件如YAML格式让你可以声明式地定义服务参数。同时它可能封装了服务的启动、停止、健康检查等逻辑方便与Docker、Kubernetes等容器化编排平台集成。辅助工具链可能包括模型下载与转换脚本、性能基准测试工具、简单的监控端点等。注意llama_deploy的具体实现版本可能有所不同有时它可能更偏向于一套最佳实践的集合、模板和工具链而非一个高度封装的黑盒框架。但其核心目标是一致的降低生产部署门槛。3. 从零开始部署一个模型服务理论说了这么多我们来点实际的。假设我们手头有一个微调好的Llama-3-8B-Instruct模型想通过llama_deploy或其理念指导下的方案部署成一个生产可用的服务。3.1 环境准备与依赖安装首先需要一个具备足够GPU显存的机器。对于8B模型FP16精度下至少需要16GB以上显存才能进行流畅推理。推荐使用CUDA 12.1及以上版本的环境。# 1. 创建并激活一个干净的Python环境推荐3.9 conda create -n llama_deploy python3.10 conda activate llama_deploy # 2. 安装PyTorch需与CUDA版本匹配 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # 3. 安装核心推理引擎vLLM # vLLM对硬件和软件版本有特定要求务必查看其官方文档 pip install vllm # 4. 安装FastAPI及相关网络组件 pip install fastapi uvicorn[standard] pydantic # 5. 可选但推荐安装监控和序列化库 pip install prometheus-client pydantic-settings如果llama_deploy项目本身提供了requirements.txt或setup.py直接安装项目依赖是更稳妥的方式。3.2 模型准备与配置编写假设我们的模型权重存放在本地路径/home/user/models/llama-3-8b-instruct下。我们需要创建一个配置文件来告诉服务如何加载和运行这个模型。创建一个名为config.yaml的文件model: # 模型在本地或远程的路径 path: /home/user/models/llama-3-8b-instruct # 模型加载的精度可选float16, bfloat16, float32, auto等。float16能节省显存。 dtype: float16 # 最大模型上下文长度需与模型训练长度匹配或小于 max_model_len: 8192 server: # 服务绑定的主机和端口 host: 0.0.0.0 port: 8000 # API路径前缀例如访问地址为 http://host:8000/v1/chat/completions api_root: /v1 engine: # 指定使用vLLM作为后端 type: vllm # 推理参数 generation_params: max_tokens: 1024 # 单次请求最大生成token数 temperature: 0.7 top_p: 0.9 # 批处理参数这是性能关键 scheduling_params: max_num_batched_tokens: 4096 # 一次批处理允许的最大token总数 max_num_seqs: 32 # 最大并发请求数这个配置文件定义了模型、服务和引擎的核心参数。其中scheduling_params是vLLM性能调优的关键需要根据你的GPU显存大小和期望的并发量进行调整。3.3 服务启动脚本与API实现llama_deploy的核心价值之一就是提供一个现成的、健壮的API服务入口。我们可以参考其源码编写一个简化的启动脚本app.pyfrom fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List, Optional import uvicorn from vllm import SamplingParams from vllm.outputs import RequestOutput import yaml import argparse # 定义请求/响应数据结构 (兼容OpenAI格式) class ChatMessage(BaseModel): role: str # system, user, assistant content: str class ChatCompletionRequest(BaseModel): model: str default # 客户端可指定服务端可能忽略或用于路由 messages: List[ChatMessage] max_tokens: Optional[int] None temperature: Optional[float] None stream: bool False class ChatCompletionResponseChoice(BaseModel): index: int message: ChatMessage finish_reason: str class ChatCompletionResponse(BaseModel): id: str object: str chat.completion created: int model: str choices: List[ChatCompletionResponseChoice] usage: dict # 加载配置 with open(config.yaml, r) as f: config yaml.safe_load(f) # 初始化vLLM引擎 from vllm import LLMEngine, EngineArgs engine_args EngineArgs( modelconfig[model][path], dtypeconfig[model][dtype], max_model_lenconfig[model][max_model_len], tensor_parallel_size1, # 如果多卡可以设置为GPU数量 gpu_memory_utilization0.9, # GPU内存利用率可调整 max_num_batched_tokensconfig[engine][scheduling_params][max_num_batched_tokens], max_num_seqsconfig[engine][scheduling_params][max_num_seqs], ) llm_engine LLMEngine.from_engine_args(engine_args) app FastAPI(titleLLM Deployment Service) app.post(/v1/chat/completions, response_modelChatCompletionResponse) async def create_chat_completion(request: ChatCompletionRequest): 处理聊天补全请求 try: # 将消息列表转换为模型所需的prompt格式 # 注意不同模型的prompt模板不同这里需要根据你的模型调整 formatted_prompt _apply_chat_template(request.messages) # 构建采样参数优先使用请求中的参数否则用配置默认值 sampling_params SamplingParams( max_tokensrequest.max_tokens or config[engine][generation_params][max_tokens], temperaturerequest.temperature or config[engine][generation_params][temperature], top_pconfig[engine][generation_params][top_p], ) # 提交推理请求到vLLM引擎 request_id freq-{id(request)} llm_engine.add_request(request_id, formatted_prompt, sampling_params) # 从引擎获取结果 (简化版实际生产环境需要更复杂的异步循环) outputs [] while llm_engine.has_unfinished_requests(): step_outputs llm_engine.step() for output in step_outputs: if output.finished: outputs.append(output) # 假设我们只处理一个请求简化逻辑 final_output: RequestOutput outputs[0] if outputs else None if not final_output: raise HTTPException(status_code500, detailInference failed) # 构建响应 response_message ChatMessage(roleassistant, contentfinal_output.outputs[0].text) choice ChatCompletionResponseChoice(index0, messageresponse_message, finish_reasonfinal_output.outputs[0].finish_reason) return ChatCompletionResponse( idrequest_id, createdint(time.time()), modelconfig[model][path], choices[choice], usage{ prompt_tokens: final_output.metrics.total_input_tokens, completion_tokens: final_output.metrics.total_output_tokens, total_tokens: final_output.metrics.total_tokens, } ) except Exception as e: raise HTTPException(status_code500, detailstr(e)) def _apply_chat_template(messages: List[ChatMessage]) - str: 将对话历史转换为模型所需的提示词格式。 这是关键且易错的一步必须与模型训练时的格式严格一致。 例如Llama-3-Instruct的模板可能类似 |begin_of_text||start_header_id|system|end_header_id|\n\n{system_message}|eot_id|... # 这里是一个极其简化的示例实际应用必须使用模型对应的tokenizer的apply_chat_template方法 # from transformers import AutoTokenizer; tokenizer AutoTokenizer.from_pretrained(model_path) # prompt tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) prompt for msg in messages: prompt f{msg.role}: {msg.content}\n prompt assistant: return prompt app.get(/health) async def health_check(): 健康检查端点用于K8s探针或负载均衡器 return {status: healthy} app.get(/metrics) async def metrics(): 暴露Prometheus格式的监控指标需集成prometheus_client # 这里可以添加自定义指标如请求数、延迟分布等 from prometheus_client import generate_latest return Response(generate_latest(), media_typetext/plain) if __name__ __main__: parser argparse.ArgumentParser() parser.add_argument(--config, typestr, defaultconfig.yaml) args parser.parse_args() # 重新加载指定配置... uvicorn.run(app, hostconfig[server][host], portconfig[server][port])这个脚本提供了一个最核心的、兼容OpenAI格式的聊天接口。真正的llama_deploy项目会在此基础上完善更多功能如流式输出Streaming、多模型路由、更完善的错误处理和监控。3.4 启动与测试服务启动服务python app.py --config config.yaml使用curl或httpie进行测试curl -X POST http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: llama-3-8b-instruct, messages: [ {role: system, content: 你是一个乐于助人的助手。}, {role: user, content: 你好请介绍一下你自己。} ], max_tokens: 100, temperature: 0.7 }如果一切顺利你将收到一个包含模型回复的JSON响应。4. 生产环境部署进阶与调优将服务跑起来只是第一步要让其稳定、高效地服务于生产流量还需要做很多工作。llama_deploy项目或类似框架的意义就在于它预见了这些需求并提供了解决方案或指引。4.1 性能调优实战性能调优的目标是在有限的GPU资源下最大化吞吐量Tokens per Second并控制延迟Time to First Token。批处理参数调优(max_num_batched_tokens,max_num_seqs)max_num_batched_tokens决定了单次前向传播能处理的最大token总数。设置得太小GPU利用率低设置得太大可能超出显存容量导致OOM内存溢出。实操心得可以从一个保守值如2048开始在模拟负载下逐步增加同时使用nvidia-smi监控显存使用情况找到一个在峰值负载下仍留有10%-20%安全余量的值。max_num_seqs决定能同时处理的最大请求数。对于交互式应用如聊天延迟敏感此值不宜过大避免单个请求等待过久。对于离线批处理任务可以调大以提高吞吐。常见策略根据应用场景的P99延迟要求来调整。KV Cache量化与模型量化FP8 KV CachevLLM支持将注意力机制中的Key-Value Cache用FP8精度存储能显著减少显存占用从而允许更大的批处理大小或更长的上下文。在配置中可以通过kv_cache_dtypefp8参数开启。注意这可能会引入极轻微的质量损失需进行测试。模型权重量化如果显存极其紧张可以考虑使用AWQ、GPTQ或Bitsandbytes等技术对模型权重进行量化如INT4/INT8再搭配vLLM加载。这通常能减少50%以上的模型加载显存但同样需要评估精度损失。持续批处理Continuous Batching的利用vLLM等引擎原生支持。这意味着当一个请求的生成长文本被中途暂停等待用户输入时GPU可以立即处理其他请求极大提升硬件利用率。确保你的API服务逻辑能很好地配合这一特性例如正确处理流式请求。4.2 可扩展性与高可用部署单机单卡的服务能力总有上限。面对高并发场景需要水平扩展。多GPU并行Tensor Parallelism对于超大模型如70B单卡放不下需要使用张量并行TP将模型拆分到多个GPU上。vLLM的tensor_parallel_size参数可以轻松实现这一点。llama_deploy的配置应能支持这种多卡模式的声明。多实例负载均衡启动多个相同的服务实例每个实例可能占用1-N张GPU。使用Nginx、HAProxy或云负载均衡器在实例间分发请求。关键点由于LLM服务有状态模型加载在显存中负载均衡策略建议使用“最少连接数”或“一致性哈希”如果请求与特定模型绑定而不是简单的轮询。容器化与编排使用Docker将你的模型服务、依赖和配置打包成镜像。然后使用Kubernetes进行编排管理它可以处理服务的部署、扩缩容、故障恢复和滚动更新。K8s的Horizontal Pod Autoscaler (HPA)可以根据CPU/内存或自定义指标如请求队列长度自动调整实例数量。# 一个简化的Dockerfile示例 FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04 WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 8000 CMD [python, app.py, --config, /app/config/config.yaml]4.3 监控、日志与可观测性“服务挂了不知道慢了不清楚原因”是运维的噩梦。基础监控集成prometheus-client在/metrics端点暴露指标。关键指标包括http_requests_total请求总数。inference_request_duration_seconds推理请求耗时分布Histogram。vllm_running_requests当前正在处理的请求数Gauge。GPU_utilization_percent,GPU_memory_used_bytes通过额外导出器获取。业务日志使用结构化日志如JSON格式记录每个请求的请求ID、模型、输入token数、输出token数、总耗时、错误信息等。这便于后续进行成本分析、异常排查和效果评估。分布式追踪在微服务架构中集成OpenTelemetry等追踪工具可以跟踪一个用户请求在整个系统中的流转路径精准定位延迟瓶颈。5. 常见问题排查与实战心得在实际部署中你一定会遇到各种问题。下面是一些典型问题及其排查思路。5.1 显存溢出CUDA Out Of Memory, OOM这是最常见的问题。现象服务启动失败或处理请求时崩溃日志报错RuntimeError: CUDA out of memory。排查步骤检查模型加载确认dtype设置正确如float16。尝试先以空载模式启动看基础显存占用是否正常。调整批处理参数显著降低max_num_batched_tokens和max_num_seqs的值。启用KV Cache FP8如果后端支持立即启用。检查上下文长度max_model_len设置是否过高过长的上下文会线性增加KV Cache显存。考虑模型量化如果上述方法都不行可能模型对于你的显卡来说就是太大了必须量化。实操心得在部署新模型前先用一个简单的脚本估算显存需求。公式大致为总显存 ≈ 模型参数显存 KV Cache显存 激活值显存。模型参数显存FP16约是参数量的2倍单位字节。KV Cache显存与批处理大小和序列长度成正比。心里有个数能避免很多盲目尝试。5.2 请求延迟过高现象服务能响应但每个请求都很慢Time to First Token (TTFT) 很长。排查步骤检查批处理设置max_num_seqs是否设置过大引擎可能为了凑满一个批次而让先到的请求等待太久。对于低延迟场景可以适当调小此值甚至设置为1禁用动态批处理但吞吐量会下降。检查硬件GPU是否处于P0性能状态使用nvidia-smi -q检查GPU的Clocks和Power状态。在推理服务器上建议设置持久化模式sudo nvidia-smi -pm 1并锁定高性能时钟。分析请求模式是否第一个token的生成预填充阶段本身就慢这通常与输入长度和模型计算量有关。可以使用性能分析工具如Nsight Systems进行深度剖析。网络与序列化如果客户端与服务端网络延迟高或请求/响应的JSON序列化反序列化耗时过长也会影响整体感知延迟。5.3 服务响应格式错误或内容混乱现象API返回了结果但内容不符合预期或者格式错误导致客户端解析失败。排查步骤首要怀疑Prompt模板90%的问题出在_apply_chat_template函数。模型没有遵循正确的对话格式导致输出混乱。务必、务必、务必使用模型原配的tokenizer中的apply_chat_template方法或者严格按照该模型官方文档的模板编写。不同模型Llama, ChatGLM, Qwen, DeepSeek的模板天差地别。检查采样参数temperature0会导致确定性输出temperature过高会导致随机性太大。top_p和top_k也会影响输出分布。检查响应封装确保你的响应体结构严格遵循OpenAI API规范特别是字段名和数据类型。可以使用在线JSON校验工具检查。5.4 并发能力上不去现象增加压力测试的并发用户数但吞吐量不增长甚至下降错误率升高。排查步骤检查GPU利用率使用nvidia-smi或gpustat查看GPU-Util是否达到高位如90%以上。如果没有说明瓶颈不在GPU计算。检查CPU和内存使用htop或vmstat查看CPU是否跑满特别是单个核心。Python的GIL可能成为瓶颈检查是否有大量的CPU侧预处理如tokenize或后处理。考虑使用异步IO或增加工作进程数。检查磁盘I/O如果模型在第一次请求时才从磁盘加载或者有频繁的日志写入可能成为瓶颈。确保模型已加载到内存并将日志写入高性能磁盘或内存盘。压力测试工具本身确认压力测试客户端如locust,wrk没有成为瓶颈机器资源充足。部署一个稳定高效的LLM服务是一个涉及模型、软件、硬件和运维的系统工程。run-llama/llama_deploy这类项目为我们搭好了主舞台但台上的精彩演出——性能调优、稳定性保障、成本控制——依然需要我们根据具体的剧本业务场景和剧场条件硬件环境来精心编排。从理解其架构开始到一步步配置、启动、调优和排错这个过程本身就是对大模型应用落地的深度实践。希望这份超详细的拆解能帮你少走些弯路更快地让你的模型在线上跑起来并跑得稳、跑得好。

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