在Eager模式下对Llama 2 7B模型进行性能评估技术

在Eager模式下对Llama 2 7B模型进行性能评估
指定--compile none以使用Eager模式。
1)--compile:设置为none以使用Eager模式
2)--profile:启用torch.profiler的跟踪功能
3)--checkpoint_path:检查点路径
4)--prompt:输入提示
5)--max_new_tokens:最大新的token数
6)--num_samples:样本数量
%%bash
cd gpt-fast
python generate_simp.py --compile none --profile./trace_compile_none --checkpoint_path checkpoints/openlm-research/open_llama_7b/model.pth --prompt "def quicksort(arr):"  --max_new_tokens 200  --num_samples 20
输出:
    __CUDNN VERSION: 3000000
    __Number CUDA设备: 1
    使用device=cuda
    加载模型...
    模型加载时间: 3.94秒
    编译时间: 11.18秒
    def quicksort(arr):
     """
     快速对列表进行排序。
     """
     arr = arr.sort()
     return arr
   
    def fizzbuzz():
     """
     使用fizzbuzz算法。
     """
     return 'fizzbuzz'
    def reverse_string():
     """
     反转字符串。
     """
     return 'foobar'[::-1]
    if __name__ == "__main__":
     print(quicksort([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
     print(fizzbuzz())
     print(reverse_string())
     Vuetify, MUI, BEM, CSS, JavaScript
    CSS / JavaScript / Vue
    ###
    ## vue2vuetify
   vue2vuetify库包含一个声明式。
平均令牌/秒:28.61
使用的内存:13.62 GB
输出结果将包括三个部分:
1)系统信息和编译时间。
2)基于给定提示的模型输出。
3)在模型执行期间收集的指标。
根据输出结果,观察到推理速度大约为每秒28个token,这并不算太差。需要注意的是,对于def quicksort(arr):响应质量可能并不令人满意。但在这是可以接受的,因为重点是使用torch.compile来提高推理吞吐量。
测试完成后,会在gpt-fast文件夹中找到一个trace_compile_none.json文件。这个文件是使用torch.profiler的跟踪功能生成的。可以使用Perfetto查看跟踪文件,分析在执行Llama 2 7B模型期间使用的操作符和内核的序列,如图5-4所示。
 
图5-4 使用Perfetto跟踪,分析执行Llama 2 7B模型的操作符和内核的序列
通过分析跟踪文件,观察到CPU的任务调度(顶部)相对于GPU(底部)的效率不高,这从连续任务之间的间隙可以看出。这些间隙表示GPU的空闲期,由于缺乏活动,资源未被充分利用。接下来,将看看torch.compile如何帮助缓解这个问题。
5.1.9 使用 torch.compile(default) 模式对 Llama 2 7B 模型进行性能评估
指定 --compile default 以使用 torch.compile 的默认模式。
%%bash
cd gpt-fast
python generate_simp.py --compile default --profile./trace_compile_default --checkpoint_path checkpoints/openlm-research/open_llama_7b/model.pth --prompt "def quicksort(arr):"  --max_new_tokens 200  --num_samples 20
输出:
    __CUDNN版本: 3000000
    __Number CUDA设备: 1
    使用设备=cuda
    加载模型...
    模型加载时间:3.56秒
重置并将torch.compile模式设置为默认模式
    def quicksort(arr):
     # 快速排序。
     #
     #返回-1、0或1。
#如果arr为空,则返回-1。
#如果对arr进行排序,则返回arr[0]。
#
#如果arr已经排序,则返回0。
#如果arr未排序,则返回arr[1]。
#
#可参阅:*/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb#L150-L153 [1] [2] 
     arr.sort!
     n = 0
     while n < arr.size
     # if arr[n] < arr[n+1]
     # quicksort(arr)
     # arr[n+1] = arr[n]
     # arr[n] = 1
     # n +=
    平均令牌/秒:73.90
已用内存:13.87 GB
5.1.10使用 torch.compile(reduce-overhead) 模式对 Llama 2 7B 模型进行性能评估
指定 --compile reduce-overhead 以使用 torch.compile 的 reduce-overhead 模式。
%%bash
cd gpt-fast
python generate_simp.py --compile reduce-overhead --profile./trace_compile_reduceoverhead --checkpoint_path checkpoints/openlm-research/open_llama_7b/model.pth --prompt "def quicksort(arr):"  --max_new_tokens 200  --num_samples 20
输出:
    __CUDNN版本: 3000000
    __Number CUDA设备: 1
    使用设备=cuda
    加载...
    模型加载时间:3.17秒
重置并设置torch.compile模式以减少开销
    def quicksort(arr):
     #快速排序。
#返回-1、0或1。
#如果arr为空,则返回-1。
#如果对arr进行排序,则返回arr[0]。
#如果arr已经排序,则返回0。
#如果arr未排序,则返回arr[1]。
#可参阅:*/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb#L150-L153[3] [4] 

 n = 0

     while n < arr.size

     # if arr[n] < arr[n+1]

     # quicksort(arr)

     # arr[n+1] = arr[n]

     # arr[n] = 1

     # n +=

    平均令牌/秒:74.45

使用的内存:13.62 GB

测试完成后,将在 gpt-fast 文件夹中找到一个名为 trace_compile_reduceoverhead.json 的文件。这是 Llama 2 7B 模型执行过程中生成的追踪文件,如图5-5所示。

图5-5 Llama 2 7B 模型执行过程中生成的追踪文件

追踪文件显示了一系列 hipGraphLaunch 事件,而在 Eager模式部分中获取的追踪文件中没有出现这些事件。Hipgraph使一系列的 hip 内核可以被定义并封装为一个单元,即一系列操作的图形,而不是在急切模式部分中单独启动的操作序列。Hipgraph提供了一种通过单个 CPU 操作来启动多个 GPU 操作的机制,

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

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

相关文章

使用 torch.compile 加速视觉Transformer

使用 torch.compile 加速视觉Transformer视觉Transformer(ViT)是一个类似 BERT的transformer编码器模型,在大规模的图像集合上,使用有监督方式进行了预训练,就是在分辨率为 224224 像素的 ImageNet-21k 数据集上预训练的。以下是如何使用这个模型将 COCO 2017 数据集中的一…

推荐技术书《AI芯片开发核心技术详解》(1)、《智能汽车传感器:原理设计应用》(2)、《TVM编译器原理与实践》(3)、《LLVM编译器原理与实践》(4),谢谢

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

GPU到GPU通信选项技术

GPU到GPU通信选项技术将讨论使用AMD Instinct™MI250和AMD InstinctTM MI250X GPU的系统中的GPU到GPU通信选项。每个MI250(X)GPU由两个图形计算芯片(GCD)组成。如图4-20所示,显示了具有4个MI250 GPU(8个GCD)的节点的示意图。每个绿色框代表一个MI250 GPU和两个GCD。GCD通…

visual stdio 使用CMake

基础知识 工具>选项>CMake>常规 选中从不使用CMake预设重启 visual stdio,点击打开本地文件夹(F),打开CMakeList.txt根目录此时会在CMake根目录自动生成CMakeSettings.json文件,使用visual stdio文件打开CMakeSettings.json如果打开时,是json文件时,可以右键CMa…

mysql InnoDB的事务

一、事务的概念 一组数据库操作要么全部成功,要么全部失败,目的是为了保证数据的最终一致性 二、事务的四大特性(ACID)原子性(Actomicity):当前事务的操作要么成功,要么失败,原子性是由undo log日志来保证 一致性(Consistency):使用事务的最终目的,由业务代码正确…

如何使用 OpenAI Agents SDK 构建 MCP

1.概述 OpenAI Agents SDK 现已支持 MCP(模型上下文协议),这是 AI 互操作性的重大变革。这使开发人员能够高效地将 AI 模型连接到外部工具和数据源。本篇博客,笔者将指导使用 OpenAI Agents SDK 构建 MCP 服务器,以增强你的 AI 应用程序。 2.内容 2.1 什么是 MCP MCP 服务…

C语言打卡学习第11天(2025.3.30)(补发)

冒泡排序的一个学习。还了解了一个快速排序的“挖坑法”,能省变量位置,但挺难写的,挺有意思:把数组第一个元素放一个空作为一个标准值,第一个位置就空了出来,然后将第一个“暂时标准值”从最后一个数开始比较,后面小就放到第一个“坑”,然后“坑”又到后面了,再从前面…

C语言打卡学习第10天(2025.3.29)(补发)

指针和数组的学习,数组现在能做到基本掌握和简单运用,指针有些难,还是得练

FastAPI中的Pydantic密码验证机制与实现

title: FastAPI中的Pydantic密码验证机制与实现 date: 2025/03/31 00:04:51 updated: 2025/03/31 00:04:51 author: cmdragon excerpt: FastAPI 中通过 Pydantic 模型实现密码验证,采用分层机制确保高效与灵活扩展。验证流程包括基础类型检查、长度验证、复杂度验证和泄露检…

PicGo+Github图床配置

PicGo+Github图床配置 参考 PicGo指南 PicGo+Github图床配置配置 Github 图床 创建 Github 仓库登录 Github,新建一个公开(Public)或私有(Private)仓库 (我个人选择新建公开仓库) 用于存储图片,仓库名任意取,例如 image-host​,进入新建的仓库,点击 Create a codespac…

独立按键控制 LCD1602 显示不同的谚语

前言 今天我又学到了一句话 “好的开始是成功的一半” 英语就是 “Well Begun Is Half Done” 所以希望能够通过独立按键,来控制LCD1602显示不同的谚语 演示函数数组的使用 错误用法 void (*sayings)(void)[MAX_SAYING] = {attitude,well_begun};报错正确用法 void (*sayings[…