在 AMD GPU 上使用 AI2 的 OLMo 模型进行推理

Inferencing with AI2’s OLMo model on AMD GPU — ROCm Blogs

2024 年 4 月 17 日,作者:Douglas Jia.

在这篇博客中,我们将向您展示如何在 AMD GPU 上使用 AI2 的 OLMo 模型生成文本。

简介

由艾伦人工智能研究所(Allen Institute for AI)开发的 OLMo(开放语言模型,Open Language Model)在生成式 AI 领域具有重要意义。它是一种真正开放的大型语言模型(LLM)和框架,旨在提供对其预训练数据、训练代码、模型权重和评估套件的完全访问权限。这种对开放性的承诺在 LLM 领域树立了新的先例,使学术界和研究人员能够共同研究和推进语言模型领域。这种开放方法有望在生成式 AI 方面带来创新和发展。

OLMo 遵循经典的仅解码器 Transformer 架构,这种架构在很多 GPT 风格的模型中都被使用。它在主要基准测试中的性能与同等规模的其他流行模型相匹配或超出其表现。关于其架构和性能评估的更多详细信息,请参考OLMo: Accelerating the Science of Language Models.

值得注意的是,OLMo 团队在其模型的预训练过程中同时使用了 AMD MI250X GPU 和 Nvidia A100 GPU 进行了性能比较。他们的研究,加上 Databricks 团队进行的两个独立调查:Training LLMs with AMD MI250 GPUs and MosaicML 和Training LLMs at Scale with AMD MI250 GPUs, 提供了 AMD 和 Nvidia GPU 性能的全面第三方比较。

这里表达的观点不代表 AMD 的官方观点,且未得到 AMD 的认可。

实现

本文示例代码在以下环境中测试:ROCm 6.0、Ubuntu 20.04、Python 3.9 和 PyTorch 2.1.1。有关支持的 GPU 和操作系统的列表,请参阅 此页面。为了方便和稳定,我们建议您直接在 Linux 系统中使用以下代码拉取并运行 rocm/pytorch Docker:

docker run -it --ipc=host --network=host --device=/dev/kfd --device=/dev/dri \--group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \--name=olmo rocm/pytorch:rocm6.0_ubuntu20.04_py3.9_pytorch_2.1.1 /bin/bash

进入 Docker 容器后,需要安装所需的包:

pip install transformers ai2-olmo

然后我们将在 Python 控制台中运行以下代码。首先,我们需要检查 PyTorch 是否可以检测到系统上的 GPU。以下代码块将显示系统上的 GPU 设备数量。

import torch
torch.cuda.device_count()

8

在下面的代码块中,我们将实例化使用 OLMo-7B 模型的推理管道。请注意,OLMo 模型有不同的大小:1B、7B 和 65B。

import hf_olmo
from transformers import pipeline
# Default device is CPU; device>=0 is setting the device to a GPU.
olmo_pipe = pipeline("text-generation", model="allenai/OLMo-7B", device=0)

接下来,提供文本提示,生成并打印出模型的输出。

output = olmo_pipe("Language modeling is ", max_new_tokens=100)
print(output[0]['generated_text'])

Language modeling is 
a branch of natural language processing that aims to 
understand the meaning of words and sentences. 
It is a subfield of computational linguistics. 
The goal of natural language modeling is to 
build a model of language that can be used 
to predict the next word in a sentence. 
This can be used to improve the accuracy 
of machine translation, to improve the 
performance of speech recognition systems, 
and to improve the performance of 

您还可以输入多个提示,在一次运行中生成多个响应。

input = ["Deep learning is the subject that", "There are a lot of attractions in New York", "Why the sky is blue"]
output = olmo_pipe(input, max_new_tokens=100)
print(*[i[0]['generated_text'] for i in output], sep='\n\n************************\n\n')

Deep learning is the subject that is being studied by the researchers. It is a branch of machine learning that is used to create artificial neural networks. It is a subset of deep learning that is used to create artificial neural networks. It is a subset of deep learning that is used to create artificial neural networks. It is a subset of deep learning that is used to create artificial neural networks. It is a subset of deep learning that is used to create artificial neural networks. It is a subset of deep learning that is used to create artificial************************There are a lot of attractions in New York City, but the most popular ones are the Statue of Liberty, the Empire State Building, and the Brooklyn Bridge.
The Statue of Liberty is a symbol of freedom and democracy. It was a gift from France to the United States in 1886. The statue is made of copper and stands on Liberty Island in New York Harbor.
The Empire State Building is the tallest building in the world. It was built in 1931 and stands 1,454 feet tall. The building has 102 floors and************************Why the sky is blue?
Why the grass is green?
Why the sun shines?
Why the moon shines?
Why the stars shine?
Why the birds sing?
Why the flowers bloom?
Why the trees grow?
Why the rivers flow?
Why the mountains stand?
Why the seas are blue?
Why the oceans are blue?
Why the stars are blue?
Why the stars are white?
Why the stars are red?
Why the stars are yellow?

您可能注意到,上述生成的文本可能非常重复。例如,第一个响应多次重复了“它是用于创建人工神经网络的深度学习的一个子集”;第三个响应以“为什么 xxx 是 xxx?”的模式多次重复。这是为什么呢?因为管道的默认解码策略是贪心搜索(greedy search),它选择概率最高的下一个Token。虽然这种策略在许多任务和小输出量情况下非常有效,但在生成较长输出时可能会导致重复的结果。接下来,我们将采用其他解码策略来缓解这个问题。如果您对这个主题感兴趣,可以参考来自 Hugging Face 的 教程)。

在接下来的代码块中,我们将演示如何使用 Top-K 和 Top-P 采样策略优化文本生成。典型的方法是使用 Top-K 采样将潜在 Token 缩小到最有可能的 K 个选项,然后在此子集中应用 Top-P 采样来选择累积达到概率阈值 P 的 Token。这个过程平衡了选择高概率 Token(Top-K)和在置信水平内确保多样性(Top-P)。您也可以单独使用这些策略。

output = olmo_pipe(input, max_new_tokens=100, do_sample=True, top_k=40, top_p=0.95)
print(*[i[0]['generated_text'] for i in output], sep='\n\n************************\n\n')

Deep learning is the subject that deals with Artificial intelligence and machine learning. In the context of artificial intelligence, Deep learning is an emerging technology that is based on artificial neural networks. It is used in almost all fields of AI such as robotics, language translation, computer vision, and others. This technology is used in computer vision for automatic image processing and recognition tasks. It is also used for image classification, speech recognition, and text translation.
With the increasing demand for artificial intelligence, the use of deep learning has also been************************There are a lot of attractions in New York, such as Central Park and the Brooklyn Bridge. Visiting all of these places would be quite overwhelming, so we recommend starting with the ones that you find the most interesting.
The best attractions for teens are Times Square, the Statue of Liberty, The Empire State Building, Central Park, and the Brooklyn Bridge.
New York City is a very busy city, so it can be challenging for a teenager to get from one place to another. This is why we recommend using public transportation, which************************Why the sky is blue" - it is a question that has been puzzling philosophers and scientists since time began.
But the world's top physicist has unveiled the secret to the colour and says he "loves" being asked about it as it has fascinated him throughout his career.
Prof Stephen Hawking, 74, of Cambridge University, said blue appears in the sky because it takes the longest wavelength of sunlight, blue, to reach the earth after it passes through the atmosphere.
He added that sunlight in the sky

生成的输出有了明显的改进,更加自然,不再那么重复。然而,请注意这些回应可能不完全准确,因为它们完全基于训练的模型生成,并没有进行事实核查。在我们未来的博客中,我们将探索改进回应准确性的方法。敬请期待!

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

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

相关文章

工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置

工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置...-CSDN博客 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明-CSDN博客 工作…

C++数学

前言 C算法与数据结构 打开打包代码的方法兼述单元测试 数论:质数、最大公约数、菲蜀定理 组合数学汇总 计算几何 博弈论 曼哈顿距离与切比雪夫距离 红线是哈曼顿距离,绿线是切比雪夫距离。 二维曼哈顿距离转切比雪夫距离 曼哈顿距离:|…

前深度学习时代-经典的推荐算法

参考自《深度学习推荐系统》—— 王喆,用于学习记录。 1.协同过滤 “协同过滤”就是协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程。 基于用户相似度进行推荐的协同过滤算法 UserCF 用户相似度…

10 Oracle Data Guard:打造高可用性与灾难恢复解决方案,确保业务连续性

文章目录 10 Oracle Data Guard:打造高可用性与灾难恢复解决方案,确保业务连续性一、Data Guard基本概念二、Data Guard技术架构三、配置Oracle Data Guard的步骤3.1 准备主数据库和备用数据库3.2 配置Redo日志传输服务3.3 配置Data Guard Broker3.4 启动…

计算机网络综合题

IP数据报的划分 CRC差错检测 冗余码的计算 因此,余数是1110,传输的数为11010110111110。在传输过程中最后两位变成o,接收端能够发现,因为11010110111110除以10011余数不为0。 子网划分 暴力求解法 (定长子网划分大量…

计算机课程管理:Spring Boot与工程认证的协同

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

Java | Leetcode Java题解之第557题反转字符串中的单词III

题目&#xff1a; 题解&#xff1a; class Solution {public String reverseWords(String s) {StringBuffer ret new StringBuffer();int length s.length();int i 0;while (i < length) {int start i;while (i < length && s.charAt(i) ! ) {i;}for (int …

C++ | Leetcode C++题解之第556题下一个更大元素III

题目&#xff1a; 题解&#xff1a; class Solution { public:int nextGreaterElement(int n) {int x n, cnt 1;for (; x > 10 && x / 10 % 10 > x % 10; x / 10) {cnt;}x / 10;if (x 0) {return -1;}int targetDigit x % 10;int x2 n, cnt2 0;for (; x2 …

第14张 GROUP BY 分组

一、分组功能介绍 使用group by关键字通过某个字段进行分组&#xff0c;对分完组的数据分别 “SELECT 聚合函数”查询结果。 1.1 语法 SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column]; 明确&#…

go函数传值是值传递?还是引用传递?slice案例加图解

先说下结论 Go语言中所有的传参都是值传递&#xff08;传值&#xff09;&#xff0c;都是一个副本&#xff0c;一个拷贝。 值语义类型&#xff1a;参数传递的时候&#xff0c;就是值拷贝&#xff0c;这样就在函数中就无法修改原内容数据。 基本类型&#xff1a;byte、int、bool…

UDP checksum(UDP校验和)

UDP校验和&#xff08;UDP checksum&#xff09;是一种用于检测传输中的UDP数据包在传输过程中是否发生错误的机制。UDP&#xff08;用户数据报协议&#xff09;是一种简单的无连接的传输层协议&#xff0c;它用于在网络中发送数据包&#xff0c;但不提供数据包的传输可靠性或顺…

使用pycharm调试程序——完全显示张量的数值

我在使用PyCharm调试程序时&#xff0c;发现有些张量因为shape过大&#xff08;数据量太多&#xff09;&#xff0c;导致该张量中的数值无法完全显示。下面就简单介绍怎样完全显示张量中的数值。 假设某个张量 inp_voxel 的 shape 为 torch.Size([5, 128, 128])&#xff0c;如…

MYSQL隔离性原理——MVCC

表的隐藏字段 表的列包含用户自定义的列和由系统自动创建的隐藏字段。我们介绍3个隐藏字段&#xff0c;不理解也没有关系&#xff0c;理解后面的undo log就懂了&#xff1a; DB_TRX_ID &#xff1a;6 byte&#xff0c;最近修改( 修改/插入 )事务ID&#xff0c;记录创建这条记…

strtok函数详解

strtok函数 strtok 函数是一个字符串分割函数&#xff0c;用于将字符串分割成一系列的标记。这个函数通过一组分隔符字符来确定标记的边界&#xff0c;每次调用都会返回字符串中的下一个标记&#xff0c;并且将原始字符串中的分隔符替换为空字符‘\0’&#xff0c;从而实际上是…

NewStar CTF 2024 misc WP

decompress 压缩包套娃&#xff0c;一直解到最后一层&#xff0c;将文件提取出来 提示给出了一个正则&#xff0c;按照正则爆破密码&#xff0c;一共五位&#xff0c;第四位是数字 ^([a-z]){3}\d[a-z]$ 一共就五位数&#xff0c;直接ARCHPR爆破&#xff0c;得到密码 xtr4m&…

Git介绍以及SSH配置

目录 1. Git介绍 1.1 Git的基本原理 1.2 Git的主要功能 1.3 Git的优点 1.4 Git的缺点 2. Git安装 3. SSH配置 1. Git介绍 Git是一款功能强大的分布式版本控制系统&#xff0c;最初由Linux操作系统的开发者Linus Torvalds在2005年开发&#xff0c;用于管理Linux内核的源代…

PH热榜 | 2024-11-09

DevNow 是一个精简的开源技术博客项目模版&#xff0c;支持 Vercel 一键部署&#xff0c;支持评论、搜索等功能&#xff0c;欢迎大家体验。 在线预览 1. Shootmail 标语&#xff1a;像Notion一样&#xff0c;可以创建漂亮邮件模板和邮件内容的工具。 介绍&#xff1a;想象一下…

嵌入式学习第21天Linux基础

目录 第1章 Linux 系统介绍 1.1 Unix 操作系统&#xff08;了解&#xff09; 1.2 Linux 操作系统&#xff08;了解&#xff09; 1.3 Linux 操作系统的主要特性&#xff08;重点&#xff09; 1.4 Linux 与 Unix 的区别与联系 1.5 GUN 与 GPL&#xff08;了解&#xff09; …

【小程序安全】小程序反编译

❤️博客主页&#xff1a; iknow181 &#x1f525;系列专栏&#xff1a; 网络安全、 Python、JavaSE、JavaWeb、CCNP &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 0x01 前期准备 知识点准备-小程序结构 1.主体结构 小程序包含一个描述整体程序的 app 和多个描述各自页…

C++ : STL容器(适配器)之stack、queue剖析

STL容器适配器之stack、queue剖析 一、stack、queue的接口&#xff08;一&#xff09;stack 接口说明&#xff08;二&#xff09;queue 接口说明 二、stack、queue的模拟实现&#xff08;一&#xff09;stack、queue是容器适配器stack、queue底层默认容器--deque1、deque概念及…