基于英特尔® Gaudi® 2 AI 加速器的文本生成流水线

这篇具有很好参考价值的文章主要介绍了基于英特尔® Gaudi® 2 AI 加速器的文本生成流水线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

随着生成式人工智能 (Generative AI,GenAI) 革命的全面推进,使用 Llama 2 等开源 transformer 模型生成文本已成为新风尚。人工智能爱好者及开发人员正在寻求利用此类模型的生成能力来赋能不同的场景及应用。本文展示了如何基于 Optimum Habana 以及我们实现的流水线类轻松使用 Llama 2 系列模型 (7b、13b 及 70b) 生成文本 - 仅需几行代码,即可运行!

我们设计并实现了一个旨在为用户提供极大的灵活性和易用性流水线类。它提供了高层级的抽象以支持包含预处理和后处理在内的端到端文本生成。同时,用户也可以通过多种方法使用该流水线类 - 你可以在 Optimum Habana 代码库中直接运行 run_pipeline.py 脚本,也可以在你自己的 python 脚本中调用该流水线类,还可以用该流水线类来初始化 LangChain。

准备工作

由于 Llama 2 模型实行的是许可式访问,因此如果你尚未申请访问权限,需要首先申请访问权限。方法如下: 首先,访问 Meta 网站 并接受相应条款。一旦 Meta 授予你访问权限 (可能需要一两天),你需要使用你当时使用的电子邮箱地址申请 Hugging Face Llama 2 模型库 的访问权限。

获取访问权限后,可通过运行以下命令登录你的 Hugging Face 帐户 (此时会需要一个访问令牌,你可从 你的用户个人资料页面 上获取):

huggingface-cli login

你还需要安装最新版本的 Optimum Habana 并拉取其代码库以获取后续要使用的脚本。命令如下:

pip install optimum-habana==1.10.4
git clone -b v1.10-release https://github.com/huggingface/optimum-habana.git

如果想运行分布式推理,还需要根据你的 SynapseAI 版本安装对应的 DeepSpeed。在本例中,我使用的是 SynapseAI 1.14.0。

pip install git+https://github.com/HabanaAI/DeepSpeed.git@1.14.0

至此,准备完毕!

方法一: 通过命令直接使用流水线脚本

首先,使用如下命令进入 optimum-habana 的相应目录,然后按照 README 中的说明更新 PYTHONPATH

cd optimum-habana/examples/text-generation
pip install -r requirements.txt
cd text-generation-pipeline

如果你想用自己的提示生成文本序列,下面给出了一个示例:

python run_pipeline.py \
  --model_name_or_path meta-llama/Llama-2-7b-hf \
  --use_hpu_graphs \
  --use_kv_cache \
  --max_new_tokens 100 \
  --do_sample \
  --prompt "Here is my prompt"

你还可以传入多个提示作为输入,并更改生成的温度或 top_p 值,如下所示:

python run_pipeline.py \
  --model_name_or_path meta-llama/Llama-2-13b-hf \
  --use_hpu_graphs \
  --use_kv_cache \
  --max_new_tokens 100 \
  --do_sample \
  --temperature 0.5 \
  --top_p 0.95 \
  --prompt "Hello world" "How are you?"

如果想用 Llama-2-70b 等大尺寸模型生成文本,下面给出了一个用 DeepSpeed 启动流水线的示例命令:

python ../../gaudi_spawn.py \
  --use_deepspeed \
  --world_size 8 run_pipeline.py \
  --model_name_or_path meta-llama/Llama-2-70b-hf \
  --max_new_tokens 100 \
  --bf16 \
  --use_hpu_graphs \
  --use_kv_cache \
  --do_sample \
  --temperature 0.5 \
  --top_p 0.95 \
  --prompt "Hello world" "How are you?" "Here is my prompt" "Once upon a time"

方法二: 在自己的 Python 脚本中调用流水线类

你还可以在自己的 Python 脚本中调用我们实现的流水线类,如下例所示。你需要在 optimum-habana/examples/text-generation/text- generation-pipeline 目录下运行该示例脚本 [译者注: 原因是 GaudiTextGenerationPipeline 这个类的定义在该目录的 pipeline.py 中]。

import argparse
import logging

from pipeline import GaudiTextGenerationPipeline
from run_generation import setup_parser

# Define a logger
logging.basicConfig(
    format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
    datefmt="%m/%d/%Y %H:%M:%S",
    level=logging.INFO,
)
logger = logging.getLogger(__name__)

# Set up an argument parser
parser = argparse.ArgumentParser()
args = setup_parser(parser)

# Define some pipeline arguments. Note that --model_name_or_path is a required argument for this script
args.num_return_sequences = 1
args.model_name_or_path = "meta-llama/Llama-2-7b-hf"
args.max_new_tokens = 100
args.use_hpu_graphs = True
args.use_kv_cache = True
args.do_sample = True

# Initialize the pipeline
pipe = GaudiTextGenerationPipeline(args, logger)

# You can provide input prompts as strings
prompts = ["He is working on", "Once upon a time", "Far far away"]

# Generate text with pipeline
for prompt in prompts:
    print(f"Prompt: {prompt}")
    output = pipe(prompt)
    print(f"Generated Text: {repr(output)}")

你需要用 python <name_of_script>.py --model_name_or_path a_model_name 命令来运行上述脚本,其中 --model_name_or_path 是必需的参数。当然,你也可以在代码中直接更改模型名称 (如上述 Python 代码片段所示)。

上述代码段表明我们实现的流水线类 GaudiTextGenerationPipeline 会对输入字符串执行生成文本所需的全部操作,包括数据预处理及后处理在内。

方法二: 在 LangChain 中使用流水线类

如果在构造时传入 use_with_langchain 参数的话,我们的文本生成流水线还可以作为 LangChain 的兼容组件使用。首先,按照如下方式安装 LangChain:

pip install langchain==0.0.191

下面给出了一个如何在 LangChain 中使用我们的流水线类的代码示例。

import argparse
import logging

from langchain.llms import HuggingFacePipeline
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

from pipeline import GaudiTextGenerationPipeline
from run_generation import setup_parser

# Define a logger
logging.basicConfig(
    format="%(asctime)s - %(levelname)s - %(name)s - %(message)s",
    datefmt="%m/%d/%Y %H:%M:%S",
    level=logging.INFO,
)
logger = logging.getLogger(__name__)

# Set up an argument parser
parser = argparse.ArgumentParser()
args = setup_parser(parser)

# Define some pipeline arguments. Note that --model_name_or_path is a required argument for this script
args.num_return_sequences = 1
args.model_name_or_path = "meta-llama/Llama-2-13b-chat-hf"
args.max_input_tokens = 2048
args.max_new_tokens = 1000
args.use_hpu_graphs = True
args.use_kv_cache = True
args.do_sample = True
args.temperature = 0.2
args.top_p = 0.95

# Initialize the pipeline
pipe = GaudiTextGenerationPipeline(args, logger, use_with_langchain=True)

# Create LangChain object
llm = HuggingFacePipeline(pipeline=pipe)

template = """Use the following pieces of context to answer the question at the end. If you don't know the answer,\
just say that you don't know, don't try to make up an answer.

Context: Large Language Models (LLMs) are the latest models used in NLP.
Their superior performance over smaller models has made them incredibly
useful for developers building NLP enabled applications. These models
can be accessed via Hugging Face's `transformers` library, via OpenAI
using the `openai` library, and via Cohere using the `cohere` library.

Question: {question}
Answer: """

prompt = PromptTemplate(input_variables=["question"], template=template)
llm_chain = LLMChain(prompt=prompt, llm=llm)

# Use LangChain object
question = "Which libraries and model providers offer LLMs?"
response = llm_chain(prompt.format(question=question))
print(f"Question 1: {question}")
print(f"Response 1: {response['text']}")

question = "What is the provided context about?"
response = llm_chain(prompt.format(question=question))
print(f"\nQuestion 2: {question}")
print(f"Response 2: {response['text']}")

该流水线类当前仅在 LangChain 0.0.191 版上验证通过,其他版本可能不兼容。

总结

我们在英特尔® Gaudi® 2 AI 加速器上实现了一个自定义的文本生成流水线,其可接受单个或多个提示作为输入。该流水线类灵活支持各种模型尺寸及各种影响文本生成质量参数。此外,不管是直接使用还是将它插入你自己的脚本都非常简单,并且其还与 LangChain 兼容。

使用预训练模型需遵守第三方许可,如 “Llama 2 社区许可协议”(LLAMAV2)。有关 LLAMA2 模型的预期用途有哪些、哪些行为会被视为滥用或超范围使用、预期使用者是谁以及其他条款,请仔细阅读此 链接 中的说明。用户需自主承担遵守任何第三方许可的责任和义务,Habana Labs 不承担任何与用户使用或遵守第三方许可相关的责任。为了能够运行像 Llama-2-70b-hf 这样的受限模型,你需要:

  • 有一个 Hugging Face 帐户
  • 同意 HF Hub 上模型卡中的模型使用条款
  • 设好访问令牌
  • 使用 HF CLI 登录你的帐户,即在启动脚本之前运行 huggingface-cli login

英文原文: https://hf.co/blog/textgen-pipe-gaudi

原文作者: Siddhant Jagtap

译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。文章来源地址https://www.toymoban.com/news/detail-839511.html

到了这里,关于基于英特尔® Gaudi® 2 AI 加速器的文本生成流水线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI作画升级,OpenVINO™ 和英特尔独立显卡助你快速生成视频

    在《 AI作画,OpenVINO™助你在英特尔GPU上随心创作》中,我们介绍了OpenVINO Notebook运行环境搭建,并利用OpenVINO™优化和加速Stable Diffusion模型的推理,在英特尔®独立显卡上能够根据我们输入的指令(prompt),快速生成我们喜爱的AI画作。 今天,我们对这一应用场景再次升级,

    2024年02月03日
    浏览(90)
  • 当英特尔 OpenVINO 遇上微软 Azure,AI在边云协同的新方案

    作者 | 宋慧 出品 | CSDN云计算 数字化浪潮下,越来越多的终端 IoT 设备接入网络,边缘的数据量与分析需求也随之增加。根据 Eclipse 对边缘负载的分析显示,人工智能是边缘计算中占比最高的负载之一,高于控制逻辑、数据分析等负载所占比例。 凭借企业级至强系列处理器,

    2024年02月07日
    浏览(55)
  • 使用FastDeploy在英特尔CPU和独立显卡上端到端高效部署AI模型

    目录 1.1 产业实践中部署AI模型的痛点 1.1.1  部署模型的典型流程 1.1.2 端到端的AI性能 1.1.3 部署模型的难点和痛点 1.2 FastDeploy简介 1.3 英特尔独立显卡简介 1.4 使用FastDeploy在英特尔CPU和独立显卡上部署模型的步骤 1.4.1 搭建FastDeploy开发环境 1.4.2 下载模型和测试图处 1.4.3 三行代

    2024年02月01日
    浏览(55)
  • 【文末附gpt升级4.0方案】英特尔AI PC的局限性是什么

    英特尔AI PC的推出无疑为AIGC(生成式人工智能)的未来发展开启了一扇新的大门。这种新型的计算机平台,通过集成先进的硬件技术和优化的软件算法,为AIGC提供了更为强大和高效的支持,进一步推动了人工智能的落地和应用。 首先,英特尔AI PC的出色性能为AIGC提供了坚实

    2024年04月15日
    浏览(53)
  • 英特尔集成显卡+ChatGLM3大语言模型的企业本地AI知识库部署

    作者: 英特尔创新大使 刘力 英特尔开发者技术推广经理 李翊玮     在当今的企业环境中,信息的快速获取和处理对于企业的成功至关重要。为了满足这一需求,我们可以将RAG技术与企业本地知识库相结合,以提供实时的、自动生成的信息处理和决策支持。这将有助于企业

    2024年04月26日
    浏览(52)
  • Ubuntu Linux 22.04 快速安装英特尔显卡驱动(含Edge AI 包)

    英特尔 EIV (Edge insight Vision)具有一组预集成组件,专为边缘应用的计算机视觉和深度学习推理而设计,并针对英特尔®架构进行了优化。它作为容器化架构或独立运行时实现。 此软件包包含用于在英特尔处理器和英特尔显卡设备上安装英特尔®显卡驱动程序和为 OpenVINO™ 推理

    2024年02月08日
    浏览(55)
  • 在英特尔AI开发板上用OpenVINO NNCF优化YOLOv7,2.15倍性能提升

    作者:康瑶明 英特尔边缘计算创新大使 YOLO代表“You Only Look Once”,它是一种流行的实时物体检测算法系列。最初的YOLO物体检测器于2016年首次发布。从那时起,YOLO的不同版本和变体被提出,每个版本和变体都显着提高了性能和效率。YOLO算法作为one-stage目标检测算法最典型的

    2024年01月24日
    浏览(72)
  • 如何在Linux系统下安装英特尔 Arc系列独立显卡驱动以及进行AI推理性能测试

    作者:  周兆靖         目前,英特尔®推出了包括了Arc™家族A770,A750在内的多个桌面版本的独立显卡(discrete Graphic Processing Unit,简称dGPU)供玩家与开发者进行选择。鉴于很多消费者都是初次体验Intel®的独立显卡,在Linux * 系统下对于显卡驱动的下载与安装并不熟悉,

    2024年02月05日
    浏览(73)
  • 微软首批AI电脑来了!一键Copilot带飞,英特尔酷睿Ultra加持,零售店买不到

    Surface Pro 10商用版和Surface Laptop 6商用版均起售1199美元。前者配酷睿Ultra U系列芯片,新增AI增强型摄像头,PC摄像头首次具有114度超宽视野,改进后13英寸LCD显示屏亮度提高33%;后者摄像头无超广角,但搭载的H系列芯片比U系列更强大,大尺寸15英寸版有两个USB-C接口。 微软首次

    2024年04月11日
    浏览(48)
  • 越小越好: Q8-Chat,在英特尔至强 CPU 上体验高效的生成式 AI

    大语言模型 (LLM) 正在席卷整个机器学习世界。得益于其 transformer 架构,LLM 拥有从大量非结构化数据 (如文本、图像、视频或音频) 中学习的不可思议的能力。它们在 多种任务类型 上表现非常出色,无论是文本分类之类的抽取任务 (extractive task) 还是文本摘要和文生图像之类的

    2024年02月06日
    浏览(101)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包