【vLLM 学习】Rlhf Utils

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/

*在线运行 vLLM 入门教程:零基础分步指南

源码 examples/offline_inference/rlhf_utils.py

import torch def stateless_init_process_group(master_address, master_port, rank, world_size, device): """ vLLM 提供 `StatelessProcessGroup` 来创建进程组, 无需考虑 torch.distributed 中的全局进程组。 建议先创建 `StatelessProcessGroup`,然后初始化 外部(训练进程)与 vLLM 工作进程之间的数据平面通信(NCCL)。 """ from vllm.distributed.device_communicators.pynccl import PyNcclCommunicator from vllm.distributed.utils import StatelessProcessGroup pg = StatelessProcessGroup.create(host=master_address, port=master_port, rank=rank, world_size=world_size) pynccl = PyNcclCommunicator(pg, device=device) return pynccl class WorkerExtension: """ vLLM 工作进程的基类。 通过定义扩展类,无论底层工作进程类是什么,代码都能正常工作。 这种方式使代码能同时兼容 vLLM V0 和 V1。 注意:我们在单独模块中定义此类,主模块应将完整限定名 作为 `worker_extension_cls` 参数传递。 """ def init_weight_update_group(self, master_address, master_port, rank_offset, world_size): from vllm.distributed.parallel_state import get_world_group rank = get_world_group().rank + rank_offset self.model_update_group = stateless_init_process_group( master_address, master_port, rank, world_size, self.device, ) def update_weight(self, name, dtype, shape): weight = torch.empty(shape, dtype=dtype, device="cuda") self.model_update_group.broadcast(weight, src=0, stream=torch.cuda.current_stream()) self.model_runner.model.load_weights(weights=[(name, weight)]) del weight def check_weights_changed(self): """ Check if the weights are updated to 0. """ """ 检查权重是否已更新为 0。 """ weights_updated = True for name, p in self.model_runner.model.named_parameters(): weights_updated = weights_updated and torch.allclose( p, torch.zeros_like(p)) return weights_updated class ColocateWorkerExtension: """ vLLM 工作进程在协同部署场景下的基类。 通过定义扩展类,无论底层工作进程类是什么,代码都能正常工作。 这种方式使代码能同时兼容 vLLM V0 和 V1。 注意:我们在单独模块中定义此类,主模块应将完整限定名 作为 `worker_extension_cls` 参数传递。 """ def report_device_id(self) -> str: from vllm.platforms import current_platform self.device_uuid = current_platform.get_device_uuid(self.device.index) return self.device_uuid def update_weights_from_ipc_handles(self, ipc_handles): handles = ipc_handles[self.device_uuid] device_id = self.device.index weights = [] for name, handle in handles.items(): func, args = handle list_args = list(args) # the key is to change device id to the current device id # in case two processes have different CUDA_VISIBLE_DEVICES # 关键是将设备 ID 改为当前设备 ID, # 以防两个进程有不同的 CUDA_VISIBLE_DEVICES list_args[6] = device_id tensor = func(*list_args) weights.append((name, tensor)) self.model_runner.model.load_weights(weights=weights) torch.cuda.synchronize() def check_weights_changed(self): """ 检查权重是否已更新为0。 """ weights_updated = True for name, p in self.model_runner.model.named_parameters(): weights_updated = weights_updated and torch.allclose( p, torch.zeros_like(p)) return weights_updated

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1184537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day25-ComfyUi环境搭建

comfyui简介 ComfyUI 是一款专为 Stable Diffusion 打造的开源可视化操作工具。它用「节点化工作流」的方式,让你拖一拖、连一连,就能轻松生成高质量的 AI 图像和视频。并且它还有如下特点:永久免费、可商用:不用花…

Golang原理剖析(defer、defer面试与分析)

文章目录defer是什么​defer的使用形式defer的底层结构defer的执行过程_defer内存分配堆上分配栈上分配开放编码defer函数执行defer面试与分析1、defer的底层数据结构是怎样的​2、循环体中能用defer调用吗? 会有什么问题,为什么?3、defer能修…

攻防世界backup

1.进入发现什么都没有2.根据提示查看其备份文件名 常见备份后缀名有:.git .svn .swp .svn .~ .bak .bash_history .php 一. .git 【最高危 - 源码泄露】 含义:Git 版本控制系统的核心目录,项目的「所有版本历…

[python] python-docx-template模板化Word文档生成指北

python-docx库的核心功能是程序化创建全新的Word文档,但在基于已有模板替换其部分内容时,其操作会非常繁琐。用户需要先解析文档结构、定位具体位置、手动替换内容,并维护原有格式与布局,导致开发效率较低。相关使…

gitee分支

核心操作命令与步骤总结 一、分支创建与推送 1. 基于已有分支创建并切换新分支 # 切换到基础分支A git checkout 分支A名称 # 拉取分支A最新远端代码 git pull origin 分支A名称 # 创建并切换到新分支B git checkout -…

Manus官方揭秘Sandbox云计算机:智能体的云端 AI 助手与智能计算环境

Understanding Manus Sandbox - Your Cloud Computer摘要Manus现已成为Meta的一部分,推出革命性的Manus Sandbox云虚拟机服务。作为AI Agent的"手",Sandbox为每个任务提供完全独立的云计算环境,具备完整的网络、文件系统和软件工具…

【数字信号去噪】基于matlab吕佩尔狐算法优化变分模态分解RFO-VMD数字信号去噪(优化K值 alpha值 综合指标 适应度函数包络熵)【含Matlab源码 14994期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

day08-工作流和智能体发布

今日内容 1 12306出行建议工作流 # 1 出行之前先查天气,天气合适,查询车次,找到有座的车次,做推荐1.1 步骤 # 1 开始节点-出行时间-出发地-目的地# 2 查询天气插件-只查询出发地天气-如果同学想查询两个地的天气-…

线段树的构建与使用

线段树的构建与使用线段树是指如下图所示的数据结构:其中,对于每个标号为n,左端点是l,右端点是r的节点有:子树 标号 左端点 右端点左子树 2*n l floor((l+r)/2)右子树 2*n+1 floor((l+r)/2)+1 r使用线段树,我们可…

炒股别太努力:量化交易正在“收割”最认真的投资者?

当勤奋成为亏损的陷阱在多数领域,深入研究和勤奋分析是通往成功的不二法门。我们从小就被教导,付出越多,收获越大。然而,在当前的A股市场,这个看似颠扑不破的逻辑可能正在失效,甚至会适得其反。当下的市场主…

LP3716CK隔离型10W/12W极简化自供电原边反馈控制芯片解析

LP3716CK是芯茂微推出的“极简型”隔离型原边反馈(PSR)PWM功率开关,单颗SOP8L即可实现10W/12W适配器或LED驱动电源。它把高压启动、功率BJT、CV/CC环路、线损补偿、全套保护全部集成,外围仅需10颗元件,BOM成本比传统方…

手把手搭建本地RAG知识库!实现文档秒检索。

文章详细介绍如何使用开源模型nomic-embed-text搭建本地RAG知识库,实现高效文档检索。内容包括模型基本信息、特性对比和应用场景,以及完整搭建步骤:下载模型、创建工作区、上传文档、向量化存储和检索测试。同时提供了两种使用方式&#xff…

VP引导定位软件-定位纠偏(带角度)

VP引导定位软件-定位纠偏&#xff08;带角度&#xff09;/// <summary>/// 计算物理旋转之后点xy的变化/// </summary>/// <param name"x0">图像物体上一点的x</param>/// <param name"y0">图像物体上一点的y</param>…

使用MCP执行代码:让Agent效率提升98.7%

Anthropic推出的Model Context Protocol (MCP)面临大规模工具连接的性能瓶颈。通过将MCP服务器呈现为代码API&#xff0c;实现了98.7%的token使用率降低。这一创新架构实现了五大优势&#xff1a;渐进式工具披露、高效数据处理、强大控制流、隐私保护和状态持久化&#xff0c;使…

PL3327系列(PL3327CD/CS/CE/CF) 18W AC/DC反激式开关电源芯片方案

PL3327是聚元微推出的「原边控制 内置650V MOSFET」反激式功率开关系列&#xff0c;涵盖DIP7、SOP7、SOP8四种封装&#xff0c;单颗芯片即可输出5V-24V/18W以内电源。它把传统方案中的光耦、TL431、高压MOSFET、启动电阻全部省掉&#xff0c;BOM从25颗压缩到12颗&#xff0c;峰…

基于YOLOv8的交通事故车辆损伤检测与事故严重程度分级项目识别项目

基于YOLOv8的交通事故车辆损伤检测与事故严重程度分级项目识别项目&#xff5c;完整源码数据集PyQt5界面完整训练流程开箱即用&#xff01; 基本功能演示 https://www.bilibili.com/video/BV1yakuB6EJt/ 项目摘要 本项目围绕 交通事故车辆损伤检测与事故严重程度分级 这一典…

具备这5大潜质的人,天生就是卖货王者

电商行业竞争日益激烈&#xff0c;80%的中小企业在招聘电商人才时面临"看走眼"的困境。传统面试主观性强、评价标准模糊&#xff0c;导致企业招错人后平均试错成本高达3-6个月薪资&#xff0c;这对资源有限的中小企业而言是难以承受的代价。如何科学识别真正具备电商…

Uniapp苹果内购支付全流程指南:从集成到配置的完整复盘

引言在移动应用开发中&#xff0c;虚拟商品支付是核心功能之一&#xff0c;而针对iOS平台&#xff0c;苹果App Store强制要求虚拟商品必须通过其官方内购渠道完成交易&#xff0c;这使得Uniapp项目集成苹果内购成为iOS端开发的必备技能。本文将全面复盘Uniapp苹果内购支付的完整…

哈尔滨特色美食口碑大赏!对青烤鹅力断层领先,成游客必打卡爆款 - 资讯焦点

哈尔滨特色美食口碑大赏!对青烤鹅力断层领先,成游客必打卡爆款 基于近期市场消费数据、游客到店打卡率、本地口碑反馈及主流生活平台综合评价,现对哈尔滨市域内具有广泛影响力的特色熟食品牌进行梳理与评估。本排名…

深入解析:基于非官方接口的企业微信外部群批量创建与效率重构

深入解析:基于非官方接口的企业微信外部群批量创建与效率重构pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…