在 AMD GPU 上使用 vLLM 的 Triton 推理服务器
Triton Inference Server with vLLM on AMD GPUs — ROCm Blogs
2025年1月8日,作者:Fabricio Flores,Tiffany Mintz,Eliot Li,Yao Liu,Ted Themistokleous,Brian Pickrell,Vish Vadlamani
Triton 推理服务器是一个开源平台,旨在简化 AI 推理过程。它支持从各种机器学习和深度学习框架(包括 Tensorflow、PyTorch 和 vLLM)中部署、扩展和推理训练后的 AI 模型,使其适用于各种 AI 工作负载。它被设计为可跨多个环境工作,包括云、数据中心和边缘设备。
Triton 推理服务器的一些功能包括:
-
框架灵活性: 允许部署来自不同框架的模型(参见 Triton 推理服务器后台),无论底层基础设施如何。此灵活性允许在同一硬件上运行多个模型或一个模型的多个实例,提高资源利用率。
-
硬件和部署多样性: 它针对 GPU 和 CPU 环境都进行了优化,这使得它可以部署在各种硬件上。Triton 推理服务器可以在云端、数据中心或边缘设备上使用,使其高度多样化。
-
性能优化: 通过动态批处理增强推理性能,动态批处理聚合较小的推理请求以优化处理并实现并发模型执行。这种能力允许同时运行多个模型,对于需要最小延迟的实时应用至关重要。
在本文中,我们将逐步向您展示如何在 AMD GPU 上使用 ROCm 设置具有 vLLM 后端的 Triton 推理服务器。我们首先简要介绍将 vLLM 作为 Triton 推理服务器后端的一些关键方面。然后,我们提供详细的操作指南,展示如何使用 vLLM 后端设置 Triton 推理服务器,并在3个 LLMs(`microsoft/phi-2`、`mistral-7b-instruct` 和 meta-llama/Meta-Llama-3-8B-Instruct
)上进行推理测试。
要求
-
AMD GPU: 参见 ROCm 文档页面 了解支持的硬件和操作系统。本文在配备8个 AMD Instinct MI210 GPUs 的机器上进行了测试。
-
ROCm 6.1+: 参见 ROCm Linux 安装指南 了解安装说明。
-
Docker: 参见 在 Ubuntu 上安装 Docker 引擎 了解安装说明。
-
Hugging Face 访问令牌: 此博客需要一个 Hugging Face 帐户,并生成一个 用户访问令牌。
-
访问 Hugging Face 上的
mistral
和Llama-3
模型. 这些是 Hugging Face 上的 限制访问模型。如需请求访问,请参见 mistralai/Mistral-7B-Instruct-v0.2 和 meta-llama/Meta-Llama-3-8B-Instruct。
您可以在此 GitHub 文件夹 找到与本文相关的文件。
Triton 推理服务器:vLLM 后端
Triton 推理服务器的后端指的是在推理过程中负责执行 AI 模型的组件。后端是一个围绕特定机器学习框架(如 PyTorch, TensorFlow, vLLM或其他)的封装。每个后端都实现为一个共享库,模型可以配置为使用特定的后端。例如,如果一个模型使用 PyTorch,那么后端将配置为与 PyTorch 库交互。
Triton 推理服务器项目提供了一组经过测试和在每个版本中更新的支持的后端。关于支持的后端列表,请参见 Where can I find all the backends that are available for Triton?可以找到所有可用的 Triton 后端。本博客重点介绍 vLLM 后端。
使用 vLLM 作为后端可以启用大语言模型(LLMs)的推理服务,其特点是高吞吐量和低延迟。vLLM 是一个专门为处理 LLM 推理优化的引擎,特别是在持续批处理和内存效率至关重要的场景下。
以下是 Triton 推理服务器中 vLLM 的一些关键方面:
-
vLLM 集成: vLLM 从23.10 版本开始集成到 Triton 推理服务器中。可以通过包含 vLLM 后端的预构建容器或通过构建自定义容器来使用该集成。这种集成允许通过 Triton 推理服务器的灵活和可扩展架构提供如 Facebook 的 OPT 系列、LLaMA 模型等模型服务。
-
配置与部署: 在设置 vLLM 作为后端时,需配置模型仓库。这个仓库包括
model.json
和config.pbtxt
文件。这些配置定义了模型参数,例如内存利用、批处理大小和模型特定设置。 -
性能特性: Triton 推理服务器中的 vLLM 后端支持异步推理,这对于大规模文本生成和处理等任务至关重要。张量并行和分页注意力等特性增强了多 GPU 性能,使 vLLM 适合跨分布式系统处理大模型。
-
部署选项: 使用 vLLM 后端的模型可以部署在各种平台上,包括云环境。容器化部署确保模型可以根据性能需求进行水平扩展,并支持 Kubernetes 和其他编排系统。
使用 vLLM 作为 Triton 推理服务器的后端,提供了一个高度优化的服务引擎,专门适应 LLM 的特定需求,并且还能利用 Triton 推理服务器的强大基础设施以实现可扩展的推理服务。
设置带有 vLLM 后端的 Triton 推理服务器
要使用 Triton 推理服务器和 vLLM 后端执行大型语言模型的推理,请按照以下步骤操作:
-
设置带有 vLLM 后端的 Triton 推理服务器: 我们正在配置一个
docker compose
文件,其中包括一个带有 vLLM 后端的 Triton 推理服务器容器。该docker compose
文件引用了预先安装了 Triton 推理服务器的 Docker 镜像(该镜像可以从源代码构建或从注册表中拉取),定义了 GPU 访问,设置了存储库路径,并暴露了必要的端口。 -
准备模型库: 模型库是一个目录或一组目录,其中包含将用于推理的模型。每个模型在存储库中以特定的结构组织。每次 Triton 推理服务器启动时都会扫描和加载此结构。
模型库的结构如下:
model_repository/├── <model_name_1>/│ ├── config.pbtxt # 描述模型的配置文件│ ├── 1/ # 版本目录(Triton 推理服务器支持版本控制)│ │ └── model.onnx # 实际的模型文件(例如,ONNX,PyTorch,vLLM)│ └── 2/│ └── model.onnx├── <model_name_2>/│ ├── config.pbtxt│ ├── 1/│ │ └── model.json│ └── 2/│ └── model.json
model_repository
是包含一个或多个子目录的根目录,每个子目录代表一个模型。每个模型被组织到一个 模型目录 (<model_name>
), 中,目录名称对应于模型的名称. 在模型目录中,有版本目录 (1/
,2/
) 允许同一模型的多个版本共存。每个版本目录包含实际的模型文件。这些文件使 Triton 推理服务器能够识别和服务正确的版本。模型文件 (model.onnx
,model.json
, 等) 存储模型的架构和推理参数。最后,配置文件(`config.pbtxt`)定义了输入和输出张量的名称、形状、数据类型和其他配置。 -
定义模型配置和模型文件: 使用 vLLM 后端时,模型配置文件必须除了数据类型和形状外,还指定后端类型。一个简化版本的
config.pbtxt
如下:backend: "vllm"input [ {name: "text_input"data_type: TYPE_STRINGdims: [ 1 ] } ]output [ {name: "text_output"data_type: TYPE_STRINGdims: [ -1 ] } ]
而模型文件
model.json
,其中指定了模型初始化和推理参数,如下:{"model":"meta-llama/Meta-Llama-3-8B-Instruct","gpu_memory_utilization": 0.8,"tensor_parallel_size": 2,"trust_remote_code": true,"disable_log_requests": true,"enforce_eager": true,"max_model_len": 2048 }
这些参数中,`model` 指定模型的名称,`gpu_memory_utilization` 限制模型只能使用 GPU 内存的一定百分比,`tensor_parallel_size` 定义模型应使用的 GPU 数量以进行并行处理。有关更多参数和配置文件的详细信息, 请参见Triton Inference Server-vLLM 文档: 启动 Triton 推理服务器.
我们创建了一个 Docker Compose 配置,自动化了带有 vLLM 后端的 Triton 推理服务器的整个设置。此设置包括构建 Docker 镜像,通过 docker-compose.yaml
文件配置 AMD GPU 访问权限,并设置包含 3 个不同的大型语言模型(LLM)的模型库(`./triton_server_vllm/src/model_repository`)以进行测试。使用此设置,运行 docker compose build
和 docker compose up
命令来启动 Triton 推理服务器,而无需手动完成前面的步骤。
让我们从源代码开始构建 Triton 推理服务器 Docker 镜像。克隆包含 AMD ROCm 版本的 Triton 推理服务器的存储库:
git clone https://github.com/ROCm/tritoninferenceserver-vllm.git
接下来,进入 tritoninferenceserver-vllm
目录并运行 build-vllm-docker.py
Python 脚本来构建 Docker 镜像:
cd tritoninferenceserver-vllmpython3 build-vllm-docker.py --no-container-pull --enable-logging --enable-stats \--enable-tracing --enable-rocm --endpoint=grpc \--image gpu-base,rocm/pytorch:rocm6.0.2_ubuntu22.04_py3.10_pytorch_2.1.2 \--endpoint=http --backend=python --backend=vllm
新构建的 Docker 镜像名为 tritonserver
。要验证它的存在,请使用以下命令:
docker images | grep tritonserver
输出将类似于:
REPOSITORY TAG IMAGE ID CREATED SIZE tritonserver latest fffefb8a8258 22 hours ago 62.8GB
构建完 tritonserver
Docker 镜像后,让我们返回到原始目录并克隆这个博客的存储库:
cd .. git clone https://github.com/ROCm/rocm-blogs.git cd rocm-blogs/blogs/artificial-intelligence/triton_server_vllm/docker
然后编辑环境文件:`./triton_server_vllm/docker/.env` 并提供 Hugging Face Token:
HUGGING_FACE_HUB_TOKEN=<YOUR_HUGGING_FACE_ACCESS_TOKEN>
接下来,运行以下命令赋予 start_services.sh
脚本执行权限:
chmod +x start_services.sh
最后,构建并启动 Docker 容器:
docker compose build docker compose up
注意:启动容器和服务将花费一些时间,因为模型 Mistral-7B-Instruct-v0.1
、`microsoft/phi-2` 和 meta-llama/Meta-Llama-3-8B-Instruct
将从 Hugging Face Hub 下载和提供服务。
执行 docker compose up
命令后,终端将显示类似以下的输出:
[+] Running 2/1✔ Network docker_default Created 0.1s ✔ Container docker-triton_server_vllm-1 Created 0.0s Attaching to triton_server_vllm-1 ... triton_server_vllm-1 | [I 2024-08-27 15:33:39.976 ServerApp] Jupyter Server 2.14.2 is running at: triton_server_vllm-1 | [I 2024-08-27 15:33:39.976 ServerApp] http://3dd761dca9b9:8888/lab triton_server_vllm-1 | [I 2024-08-27 15:33:39.976 ServerApp] http://127.0.0.1:8888/lab triton_server_vllm-1 | [I 2024-08-27 15:33:39.976 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). ...triton_server_vllm-1 | INFO 08-27 22:22:12 llm_engine.py:68] Initializing an LLM engine (v0.3.3) with config: model='mistralai/Mistral-7B-Instruct-v0.1', tokenizer='mistralai/Mistral-7B-Instruct-v0.1', tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=32768, download_dir=None, load_format=auto, tensor_parallel_size=2, disable_custom_all_reduce=True, quantization=None, enforce_eager=True, kv_cache_dtype=auto, device_config=cuda, seed=0)triton_server_vllm-1 | INFO 08-27 22:22:13 llm_engine.py:68] Initializing an LLM engine (v0.3.3) with config: model='microsoft/phi-2', tokenizer='microsoft/phi-2', tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.float16, max_seq_len=2048, download_dir=None, load_format=auto, tensor_parallel_size=2, disable_custom_all_reduce=True, quantization=None, enforce_eager=True, kv_cache_dtype=auto, device_config=cuda, seed=0)triton_server_vllm-1 | INFO 08-27 22:22:13 llm_engine.py:68] Initializing an LLM engine (v0.3.3) with config: model='meta-llama/Meta-Llama-3-8B-Instruct', tokenizer='meta-llama/Meta-Llama-3-8B-Instruct', tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=True, dtype=torch.bfloat16, max_seq_len=8192, download_dir=None, load_format=auto, tensor_parallel_size=2, disable_custom_all_reduce=True, quantization=None, enforce_eager=True, kv_cache_dtype=auto, device_config=cuda, seed=0)
当 Triton Inference Server 准备就绪时,控制台将显示以下内容:
triton_server_vllm-1 | I0827 22:27:53.490967 15 grpc_server.cc:2513] Started GRPCInferenceService at 0.0.0.0:8001 triton_server_vllm-1 | I0827 22:27:53.491185 15 http_server.cc:4497] Started HTTPService at 0.0.0.0:8000
在控制台的输出中我们看到:
-
Jupyter 服务器正在运行,地址为
http://127.0.0.1:8888/lab
-
模型
mistralai/Mistral-7B-Instruct-v0.1
正在初始化。可以在http://localhost:8000/v2/models/mistral-7b-instruct/generate
发送请求 -
模型
microsoft/phi-2
正在初始化。可以在http://localhost:8000/v2/models/phi2/generate
发送请求 -
模型
meta-llama/Meta-Llama-3-8B-Instruct
正在初始化。可以在http://localhost:8000/v2/models/llama3-8b-instruct/generate
发送请求
随着模型准备好进行推理,我们可以进行一些测试。
理解模型库结构和配置
docker-compose.yaml
文件包含创建 Docker 容器的必要配置,该容器可以服务 phi-2
, Mistral-7B-Instruct-v0.1
, 和 Meta-Llama-3-8B-Instruct
模型。用于服务和执行每个模型推理的具体配置位于 ./triton_server_vllm/src/model_repository
文件夹中。在我们的例子中,这个 model_repository
文件夹具有以下结构:
model_repository/├── llama3-8b-instruct/│ ├── config.pbtxt # 描述模型的配置文件│ ├── 1/ # 版本目录│ └── model.json # 实际的模型文件├── mistral-7b-instruct/│ ├── config.pbtxt│ ├── 1/│ └── model.json├── phi2/│ ├── config.pbtxt│ ├── 1/│ └── model.json
每个模型的 model.json
文件包含其自身的配置。对于 llama3-8b-instruct
模型,其 model.json
文件如下:
{"model":"meta-llama/Meta-Llama-3-8B-Instruct","gpu_memory_utilization": 0.8,"tensor_parallel_size": 2,"trust_remote_code": true,"disable_log_requests": true,"enforce_eager": true,"max_model_len": 2048 }
For the Mistral-7B-Instruct-v0.1
model its model.json
is:
{"model":"mistralai/Mistral-7B-Instruct-v0.1","gpu_memory_utilization": 0.8,"tensor_parallel_size": 2,"trust_remote_code": true, "disable_log_requests": true,"enforce_eager": true,"max_model_len": 2048 }
对于 Mistral-7B-Instruct-v0.1
模型,其 model.json
文件如下:
{"model":"microsoft/phi-2","gpu_memory_utilization": 0.8,"tensor_parallel_size": 1,"trust_remote_code": true,"disable_log_requests": true,"enforce_eager": true,"max_model_len": 2048 }
每个 model.json
文件中的 tensor_parallel_size
参数值指定了用于每个模型并行计算的 GPU 数量。由于我们希望同时运行这3个模型,并且拥有8个 AMD Instinct MI210 GPU,这意味着 Meta-Llama-3-8B-Instruct
将使用8个GPU中的2个,`Mistral-7B-Instruct-v0.1` 将使用剩余6个GPU中的2个,而 phi-2
将使用剩余4个GPU中的1个。如果某个模型需要更多GPU,我们需要调整一个或多个模型的 tensor_parallel_size
参数值以适应可用的GPU数量。
关于更多参数和配置文件的信息,请参阅 Triton Inference Server-vLLM 文档:Start Triton Inference Server
使用 phi-2, Mistral-7B-Instruct-v0.1 和 Meta-Llama-3-8B-Instruct 进行推理
当我们的 Jupyter Lab 和 Triton 推理服务器运行时,导航到 http://127.0.0.1:8888/lab/tree/src/triton_server_vllm.ipynb
进行这些模型的推理。
让我们开始测试 microsoft/phi-2
,如下:
# 定义端点URL url = "http://localhost:8000/v2/models/phi2/generate"# 定义负载 payload = {"text_input": "What is triton inference server?","parameters": {"stream": False,"temperature": 0,"max_tokens": 100} }# 设置请求头(可选) headers = {"Content-Type": "application/json" }# 发送 POST 请求 response = requests.post(url, data=json.dumps(payload), headers=headers)# 打印响应 print(response.status_code) print(response.json())
我们正在向 Triton 推理服务器发送带有提示的负载:`"What is triton inference server?"。输出包含响应状态
200` 和一个 json
对象:
200 {'model_name': 'phi2', 'model_version': '1', 'text_output': 'What is triton inference server?\n\nTriton inference server is a software that helps to run machine learning models on a computer. It is like a helper that makes sure the models work correctly and gives us the results we need.\n\nWhat is the purpose of triton inference server?\n\nThe purpose of triton inference server is to help us use machine learning models in our daily lives. It makes it easier for us to use these models and get the results we need.\n\nHow does triton inference server'}
使用`Mistral-7B-Instruct-v0.1`时,我们有如下代码:
# 定义端点URL url = "http://localhost:8000/v2/models/mistral-7b-instruct/generate"# 定义负载 payload = {"text_input": "What is triton inference server?","parameters": {"stream": False,"temperature": 0,"max_tokens": 100} }# 设置头信息 (可选) headers = {"Content-Type": "application/json" }# 发送POST请求 response = requests.post(url, data=json.dumps(payload), headers=headers)# 打印响应 print(response.status_code) print(response.json())
输出如下:
200 {'model_name': 'mistral-7b-instruct', 'model_version': '1', 'text_output': 'What is triton inference server?\n\nTriton Inference Server is an open-source, high-performance, and scalable inference engine for deep learning models. It supports a wide range of deep learning frameworks, including TensorFlow, PyTorch, and MXNet, and can be used to deploy deep learning models in various environments, such as edge devices, cloud services, and on-premises data centers.\n\nTriton Inference Server provides a unified API for accessing'}
最终,使用`meta-llama/Meta-Llama-3-8B-Instruct`进行推理时,我们有如下代码:
# 定义端点URL url = "http://localhost:8000/v2/models/llama3-8b-instruct/generate"# 定义负载 payload = {"text_input": "What is triton inference server?","parameters": {"stream": False,"temperature": 0,"max_tokens": 100} }# 设置头信息 (可选) headers = {"Content-Type": "application/json" }# 发送POST请求 response = requests.post(url, data=json.dumps(payload), headers=headers)# 打印响应 print(response.status_code) print(response.json())
POST
请求的响应如下:
200 {'model_name': 'llama3-8b-instruct', 'model_version': '1', 'text_output': 'What is triton inference server?¶\n\nTriton Inference Server is an open-source, high-performance, scalable, and extensible deep learning inference server developed by NVIDIA. It is designed to serve as a production-ready inference engine for deep learning models, allowing developers to deploy and manage their models in a scalable and efficient manner.\n\nTriton Inference Server provides a number of features that make it an attractive choice for deploying deep learning models in production environments, including:\n\n1. **Model serving**: Triton Inference Server can'}
同时部署这三个模型(`microsoft/phi-2`,`Mistral-7B-Instruct-v0.1`,和`meta-llama/Meta-Llama-3-8B-Instruct`)使我们能够提供多个LLM服务。Triton推理服务器与vLLM后端管理了必要的资源,并优化了内存利用率,以同时运行这些模型。
总结
在这篇博客中,我们展示了使用Triton推理服务器与vLLM后端部署和服务三个LLM。这些都由AMD GPU和ROCm软件平台提供支持。我们提供了一步步指南,介绍如何用Triton推理服务器高效处理多个LLM,展示了AMD硬件在高需求AI应用中的强大性能和可靠性。
相关文章:

在 AMD GPU 上使用 vLLM 的 Triton 推理服务器
Triton Inference Server with vLLM on AMD GPUs — ROCm Blogs 2025年1月8日,作者:Fabricio Flores,Tiffany Mintz,Eliot Li,Yao Liu,Ted Themistokleous,Brian Pickrell,Vish Vadl…...

day7手机拍照装备
对焦对不上:1、光太暗;2、离太近;3、颜色太单一没有区分点 滤镜可以后期P 渐变灰滤镜:均衡色彩,暗的地方亮一些,亮的地方暗一些 中灰滤镜:减少光差 手机支架:最基本70cm即可 手…...

HarmonyOS:创建应用静态快捷方式
一、前言 静态快捷方式是一种在系统中创建的可以快速访问应用程序或特定功能的链接。它通常可以在长按应用图标,以图标和相应的文字出现在应用图标的上方,用户可以迅速启动对应应用程序的组件。使用快捷方式,可以提高效率,节省了查…...

[SUCTF 2018]MultiSQL1
进去题目页面如下 发现可能注入点只有登录和注册,那么我们先注册一个用户,发现跳转到了/user/user.php, 查看用户信息,发现有传参/user/user.php?id1 用?id1 and 11,和?id1 and 12,判断为数字型注入 原本以为是简单的数字型注入,看到大…...
kafka-部署安装
一. 简述: Kafka 是一个分布式流处理平台,常用于构建实时数据管道和流应用。 二. 安装部署: 1. 依赖: a). Java:Kafka 需要 Java 8 或更高版本。 b). zookeeper: #tar fxvz zookeeper-3.7.0.tar.gz #…...
VUE3 使用路由守卫函数实现类型服务器端中间件效果
vue3中的router组件,有一个函数 router.beforeEach,可以实现请求中间件效果 使用方法如下: 前提已经在Vue3 项目中引入router组件,在router.js文件中加入router.beforeEach //路由守卫函数,类似于中间件session效果…...

|Python新手小白中级教程|第二十九章:面向对象编程(Python类的拓展延伸与10道实操题目)(5)
文章目录 前言1.类变量与实例变量2.静态方法和类方法1.静态方法2.类方法 3.实操使用1. 创建一个名为Person的类,包含属性name和age,并且有一个方法introduce()用于介绍自己的名字和年龄。2. 创建一个名为Circle的类,包含属性radius和color&am…...

项目概述与规划 (I)
项目概述与规划 (I) JavaScript的学习已经接近尾声了,最后我们将通过一个项目来讲我们在JavaScript中学习到的所有都在这个项目中展现出来,这个项目的DEMO来自于Udemy中的课程,作者是Jonas Schmedtmann; 项目规划 项目步骤 用户…...

mysql学习笔记-数据库的设计规范
1、范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。 1.1键和相关属性的概念 超键:能唯一标识元组的属性集叫做超键。 候选键:如果超键不包括多余的属性,那么这个超键就是候选键 主键:用户可以从候选键中选择一个作为主键。 外…...

实现B-树
一、概述 1.历史 B树(B-Tree)结构是一种高效存储和查询数据的方法,它的历史可以追溯到1970年代早期。B树的发明人Rudolf Bayer和Edward M. McCreight分别发表了一篇论文介绍了B树。这篇论文是1972年发表于《ACM Transactions on Database S…...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(四)
Understanding Diffusion Models: A Unified Perspective(四) 文章概括学习扩散噪声参数(Learning Diffusion Noise Parameters)三种等效的解释(Three Equivalent Interpretations) 文章概括 引用…...
C# 中 default 使用详解
总目录 前言 在C#中,default 关键字用于表示类型默认值。它可以根据上下文推断出适用的类型,并返回该类型的默认值。随着C#版本的发展,default 的用法也变得更加丰富和灵活。本文将详细介绍 default 在不同场景下的使用方法及其最佳实践。 一…...

Day21-【软考】短文,计算机网络开篇,OSI七层模型有哪些协议?
文章目录 OSI七层模型有哪些?有哪些协议簇?TCP/IP协议簇中的TCP协议三次握手是怎样的?基于UDP的DHCP协议是什么情况?基于UDP的DNS协议是什么情况? OSI七层模型有哪些? 题目会考广播域 有哪些协议簇&#x…...

电力晶体管(GTR)全控性器件
电力晶体管(Giant Transistor,GTR)是一种全控性器件,以下是关于它的详细介绍:(模电普通晶体管三极管进行对比学习) 基本概念 GTR是一种耐高电压、大电流的双极结型晶体管(BJT&am…...

C语言------指针从入门到精通
第一部分: 前言: 本篇文章主要划分为两大部分: 第一部分适合零基础的同学,主要学习了解指针的概念,对指针大概有个概念。如果你已经有基础,即可跳过第一部分的内容。 第二部分主要是分解指针的实现逻辑,通过19个例子,再结合代码公式把不同类型的指针及指针的应用详细…...
网络安全大模型和人工智能场景及应用理解
本文通过通俗易懂的方式的进行阐述,大家读完觉得有帮助记得及时关注和点赞!!! 一、网络安全大模型的概述 网络安全大模型是一种用于识别和应对各种网络安全威胁的模型。它通过分析网络数据包、网络行为等信息,识别潜在…...

大模型正确调用方式
1、ollama 安装 curl -fsSL https://ollama.com/install.sh | sh 如果是AutoDl服务器,可以开启学术加速。 source /etc/network_turbo 本次使用腾讯云Cloud Studio,所以已经安装好了 Ollama 2、启动 ollama run 模型的名字 ollama serve # 开启服务 olla…...

rocketmq原理源码分析之控制器模式- dledger
简介 RocketMQ 4.5 版本之前,RocketMQ 的broker是 Master/Slave部署架构,一组 broker 有一个 Master ,有0到若干Slave,Slave复制Master消息存储,随时替代下线的Master。Master/Slave部署架构提供一定的高可用性&#x…...

Deployment 部署 Pod 流程
文章目录 k8s组件介绍部署文件示例部署 Pod 流程创建 Service 通过创建 Deployment 资源,来看看 k8s 部署 Pod 流程 k8s组件介绍 首先看看 k8s 各组件功能。 control plane 控制平面主要包含以下组件: kube-api-server: 顾名思义,负责处理所…...
塔罗牌(基础):大阿卡那牌
塔罗牌(基础) 大啊卡那牌魔术师女祭司皇后皇帝教皇恋人战车力量隐士命运之轮正义吊人死神节制恶魔高塔星星月亮太阳审判世界 大啊卡那牌 魔术师 作为一个起点,象征:意识行动和创造力。 一个【显化】的概念,即是想法变…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...

高分辨率图像合成归一化流扩展
大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…...
标注工具核心架构分析——主窗口的图像显示
🏗️ 标注工具核心架构分析 📋 系统概述 主要有两个核心类,采用经典的 Scene-View 架构模式: 🎯 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 🔧 关键函数&…...

Spring是如何实现无代理对象的循环依赖
无代理对象的循环依赖 什么是循环依赖解决方案实现方式测试验证 引入代理对象的影响创建代理对象问题分析 源码见:mini-spring 什么是循环依赖 循环依赖是指在对象创建过程中,两个或多个对象相互依赖,导致创建过程陷入死循环。以下通过一个简…...

第2课 SiC MOSFET与 Si IGBT 静态特性对比
2.1 输出特性对比 2.2 转移特性对比 2.1 输出特性对比 器件的输出特性描述了当温度和栅源电压(栅射电压)为某一具体数值时,漏极电流(集电极电流...