Redian新闻
>
使用BigDL LLM在Intel® Data Center GPU上进行Llama 2模型调优

使用BigDL LLM在Intel® Data Center GPU上进行Llama 2模型调优

公众号新闻

作者 | 杜炜,汪洋,Rahul Unnikrishnan Nair
译者 | 平川
策划 | Tina

本文最初发布于英特尔官方网站,经英特尔授权由 InfoQ 中文站翻译并分享。

在飞速发展的生成式人工智能(GenAI)领域,大型语言模型(LLM)调优因其高计算、高内存需求而带来了独特的挑战。LoRA 和 QLoRA 等技术为最先进 LLM 模型的调优工作提供了更强大的选项,它们的速度更快,成本更低。我们已经将 QLoRA 集成到了 BigDL LLM 库中。这个库是专门为英特尔的 GPU 而设计的。

在本文中,我们将介绍两个在 Intel® Data Center GPU 上使用 QLoRA 对 Llama 2 模型进行调优的主题:

  • 性能改进结果数据

  • 调优说明

    使用 BigDL LLM 进行 LLM 调优

我们在 Stanford Alpaca 数据集上使用 QLoRA 对 Llama 2 7B 和 70B 模型进行了调优,并使用多个 Intel® Data Center GPU Max 1550 和 1100 系统(包括 英特尔开发云 上的系统)运行了 3 个 epoch。

下图对比了 Llama 2 7B 和 70B 模型的调优时长,使用的配置是配有 1、4 和 8 张 GPU 的 Intel® Data Center GPU Max 1550 和 1100 系统。

性能数据结果

图 1、在 Intel ® Data Center GPU 上进行 Llama 2 7B 模型性能调优

有关配置请查阅原文的配置与免责声明

在单 GPU 卡的单服务器配置中,Llama 2 7B 调优所需的时间:在 Intel® Data Center GPU Max 1100 上为 5.35 小时,在 Intel® Data Center GPU Max 1550 上为 2.4 小时。当配置扩展到 8 个 GPU 时,Llama 2 7B 调优所需的时间:在 Intel®Data Center GPU Max 1100 上显着减少到约 0.8 小时(48 分钟),在 Intel®Data Center GPU Max 1550 上减少到约 0.35 小时(21 分钟)。

扩展后的 BigDL LLM 库支持在各种英特尔 GPU 上对 LLM 进行调优,包括 Intel® Data Center GPU Flex 170 和 Intel® Arc™系列显卡。具体来说,以 Intel®Data Center GPU Flex 170 硬件为例,在一台配备 8 张 Intel®Data Center GPU Flex 170 显卡的服务器上,在大约 2 小时之内就可以完成 Llama 2 7B 模型的调优。

图 2、在 Intel ® Data Center GPU 上进行 Llama 2 70B 模型性能调优

有关配置请查阅原文的配置与免责声明

对更大的 LLM 进行调优,如 Llama 2 70B,需要更高的计算能力、VRAM 和时间。根据我们的评估,在一台服务器上配置 4 张和 8 张 Intel® Data Center GPU Max 系列显卡可以显著提升效率。具体而言,配备 8 张 Intel® Data Center GPU Max 系列 GPU 的单台服务器显著加快了这一过程,在大约 200 分钟(3.14 小时)的时间内完成了 Llama 2 70B 模型的调优。在我们测试的配置中,这一配置是最高效的。

用于模型训练的数据集

我们使用了来自 Hugging Face 的数据集yahma/alpaca-cleaned,其中包含 51.8k 行英语教学文本。要全面理解和应用这个数据集,请访问 Hugging Face Dataset 数据集页面。

LLM 调优步骤

在这一节中,我们将介绍在 Intel® Data Center GPU 上使用 BigDL LLM 进行 Llama 2 模型调优的步骤。

1. 在英特尔开发云上获取 Intel Data Center GPU 资源

英特尔开发云(IDC) 上提供了Intel ® Data Center GPU 实例。你可以创建一个免费帐户,并探索英特尔提供的各种计算平台。请按照 IDC 网站的说明开始吧。

2. 准备用于 LLM 调优的 BigDL LLM 环境

要准备在 Intel GPU 上进行 LLM 调优的 BigDL LLM 环境,通常需要从配备了 Intel GPU 驱动程序和 oneAPI 基本工具包的 Linux 系统开始。我们建议使用 Conda 进行环境管理。使用英特尔开发云时,设置过程大大简化,其中 Conda 环境预先配置了必要的组件,包括 pytorch-gpu 环境。英特尔开发云简化了设置过程,不需要用户手动获取环境,使他们可以专注于 LLM 调优任务,提升效率。

首先,选择 pytorch-gpu 内核并安装 bigdl-llm[xpu] 包,如下所示:

conda create -n llm python=3.9conda activate llmpip install --pre --upgrade bigdl-llm[xpu] -f https://developer.intel.com/ipex-whl-stable-xpu

配置 oneAPI 环境变量:

source /opt/intel/oneapi/setvars.sh

为了在 Intel Data Center GPU 上获得最佳性能,你还应该安装 gperftools 并设置一些重要的配置环境变量:

conda install -y gperftools -c conda-forgeexport LD_PRELOAD=${LD_PRELOAD}:${CONDA_PREFIX}/lib/libtcmalloc.soexport USE_XETLA=OFFexport SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1export ENABLE_SDP_FUSION=1

3. 在单 GPU 上进行 Llama 2 7B 模型调优

这段伪代码大致勾勒出了一个在 Intel® Data Center GPU Max 1550 GPU 上进行高效调优的结构化方法。示例代码后面有更详细的说明。我们将下面的代码命名为 fine-tuning.py,我们将用它进行 Llama 2 7B 和 70B 模型的调优。


import torchimport transformersfrom datasets import load_datasetimport acceleratefrom transformers import LlamaTokenizerfrom peft import LoraConfigimport intel_extension_for_pytorch as ipexfrom bigdl.llm.transformers import AutoModelForCausalLMfrom bigdl.llm.transformers.qlora import get_peft_model, prepare_model_for_kbit_training
def train(\...):
#步骤1:从目录或HF Hub将基本模型加载为4位NormalFloat格式 model = AutoModelForCausalLM.from_pretrained( 'meta-llama/lama-2-7b-hf', load_in_low_bit="nf4", # According to the QLoRA paper, using "nf4" could yield better model quality than "int4" optimize_model=False, torch_dtype=torch.bfloat16, modules_to_not_convert=["lm_head"], ) model = model.to('xpu') tokenizer = LlamaTokenizer.from_pretrained(base_model)
# 步骤2:准备一个兼容BigDL-LLM的Peft模型 model = prepare_model_for_kbit_training( model, use_gradient_checkpointing=gradient_checkpointing ) config = LoraConfig( r=lora_r, lora_alpha=lora_alpha, target_modules=lora_target_modules, lora_dropout=lora_dropout, bias="none", task_type="CAUSAL_LM", ) model = get_peft_model(model, config)
# 加载数据集,并划分为train_data和val_data data = load_dataset(data_path) train, val_data = ...
# 步骤3:数据处理并传递给data_collator trainer = transformers.Trainer( model=model, train_dataset=train_data, eval_dataset=val_data, args=transformers.TrainingArguments( # keypart3: define plenty of training args as you need bf16=True, per_device_train_batch_size=micro_batch_size, gradient_accumulation_steps=gradient_accumulation_steps, num_train_epochs=num_epochs, learning_rate=learning_rate, gradient_checkpointing=gradient_checkpointing, ... ), data_collator=... )
model.config.use_cache = False trainer.train(resume_from_checkpoint=resume_from_checkpoint) model.save_pretrained(output_dir)

注意:


在步骤 1 中,在 bigdl.llm.transformers 的 AutoModelForCausalLM 模块中设置 low_in_low_bit='nf4',将所有线性层(不包括'lm_head')转换为 4 位 NormalFloat。然后,通过执行 model.to("xpu") 将转换后的 Llama 2 7B 模型从 CPU 传输到英特尔 GPU。


步骤 2 使用了 bigdl.llm.transformers.qlora 中的 get_peft_model 和 prepare_model_for_kbit_training 函数。这些函数有助于将 Llama 2 7B 模型转换为与 BigDL-LLM 兼容的格式,特别是作为 Peft 模型。


在步骤 3 中,设置 TrainingArguments 中的参数以提高调优性能。请注意,当使用 BF16 和 FP32 混合数据类型时,设置 BF16=True 会带来更平衡的调优性能和模型精度。

要查看完整的调优示例代码,请参阅 GitHub 上的 alpaca_qlora_fine-tuning.py 脚本。

4. Llama 2 70B 调优,扩展为多 GPU 上的分布式调优

为了将调优过程从 Llama 2 7B 扩展到 Llama 2 70B,将'meta-llama/lama-2-7b-hf'更改为'meta-llama/lama-2-70b-hf',并设置 gradient_checkpointing=True,否则 GPU VRAM 很有可能不足以完成 70B 模型的训练。

我们使用 miprun 在配有多个 GPU 的系统上实现分布式调优,以下是示例步骤。

a. 设置 local_rank、world_size 等相关变量:


def get_int_from_env(env_keys, default): """Returns the first positive env value found in the `env_keys` list or the default.""" for e in env_keys: val = int(os.environ.get(e, -1)) if val >= 0: return val return default
local_rank = get_int_from_env(["LOCAL_RANK","MPI_LOCALRANKID"], "0")world_size = get_int_from_env(["WORLD_SIZE","PMI_SIZE"], "1")port = get_int_from_env(["MASTER_PORT"], 29500)os.environ["LOCAL_RANK"] = str(local_rank)os.environ["WORLD_SIZE"] = str(world_size)os.environ["RANK"] = str(local_rank)

b. 设置环境变量,并使用 mpirun 启动 fine-tuning.py 脚本:


export MASTER_ADDR=127.0.0.1export OMP_NUM_THREADS=6 # adjust this to 1/16 of total physical coresexport FI_PROVIDER=tcpexport CCL_ATL_TRANSPORT=ofimpirun -n 16 \ python -u ./fine-tuning.py \ --base_model “meta-llama/Llama-2-70b-hf” \

要了解更多细节,请查看 GitHub 上提供的 BigDL LLM 在线示例。

入门指南

为了帮助新手开始使用 BigDL LLM 和 QLoRA 技术对大型语言模型进行调优,我们开发了一个全面的 Jupyter 笔记本,可以引导你一步一步地完成这个过程。首先,在英特尔开发云上注册一个免费的标准帐户。然后,转到控制台主页,单击左侧的 Training and Workshops 图标,向下滚动到“Gen AI Essentials”部分,并进入 LLM Fine-tuning with QLoRA 笔记本。该笔记本将引导你逐步完成调优过程,并帮助你将这些技术应用于各种 LLM 上。

小    结

生成式人工智能模型需要大量的计算和内存。我们在 Intel ® Data Center GPU 上使用 BigDL LLM 进行大型语言模型调优的探索,揭示了克服这一固有挑战的有效策略。通过性能数据分析和分步指南,我们已经证明了 QLoRA 可以有效地减少对最先进的 LLM(如 Llama 2 7B 和 Llama 2 70B)进行调优的时间。希望我们的研究结果能够提供有价值的见解,并为该领域的研究人员和从业者提供实用的资源。我们会继续在这个充满活力、快速发展的领域中,推进生成式人工智能、共享知识以及促进协作创新。

原文链接:

https://www.intel.com/content/www/us/en/developer/articles/technical/finetuning-llms-on-intel-gpus-using-bigdl-llm.html

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

今日好文推荐

今年向量数据库“杀疯了”,但纯向量数据库“凉”了?| 盘点

金融业采用大模型,是“用大炮轰蚊子”吗?| 盘点

马斯克被“逼疯”、OpenAI 上演连续剧、QQ 选型遭群嘲|InfoQ 年度最受欢迎文章排行榜

发布 Vue3 让尤雨溪吃尽苦头:犯了3个错,每一个都需开发者警惕

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
LLM-first IDE:Code Agents 超级入口,软件开发的“Excel 时刻”留点给自己!龙行龘(dá)龘(dá)!ECU上新神课:一年制中教GD!全澳唯一!2023西丽湖论坛开幕!李彦宏现身,称国内200多个大模型调用量还没文心一个多?龙行龘(dá)龘(dá)!这些三叠字怎么念?麻州黄金地段,自住投资两相宜--本周房源精选--Melrose/Lynnfield/BelmontSystem76 升级 Serval WS Linux 移动工作站,最高 i9-14900HX CPU+RTX 4070 GPUPaypal错了三笔账给中国女生, 但是她不还我, PayPal 让我报告 FBI andCrime CenterA Year of Relief for Filmmakers, Theaters — Will It Last?权力是一个很神奇的东西!AI诊疗或更准确,来自顶刊新研究!大模型搞医疗现状:在CPU上成功落地System76 升级 Serval WS Linux 移动工作站:最高 i9-14900HX CPU+RTX 4070 GPUCell Stem Cell | 新冠伤脑!陈水冰团队新研究表明SARS-CoV-2可以感染多巴胺能神经元并致其衰老华尔街最神秘投行Lazard (US) 已开放2025 Summer Analyst岗位!Amid Global Warming, El Niño Threatens Uncertain Winter in China两篇Cell+5篇Cell子刊首次成功在实验室中制造出合成基因组超过50%的酵母菌株拼多多TEMU上线南非站点;阿里云发布PolarDB新版本;茅台市值跌破2万亿……62退休就拿SS,80前把资产都转给娃,80岁进nursing center夏婳:两情难相知(四十四)150刀Apple Watch S3 42mm gps + cellular stainless steel 类器官新进展!Cell Stem Cell :科学家开发出带有免疫成分的结肠类器官,实现功能性驻留巨噬细胞共培养龙行龘(dá)龘(dá)!2024央视春晚宣布→全面对标OpenAI生态!智谱AI推出GLM-4大模型全家桶,GLMs上线,不会编程也能创建Agent港大&百度提出LLMRec:基于LLM增强的多模态图神经网络推荐dá àn jiē xiǎo 🥳AMD推出锐龙8040系列APU,采用Zen4 CPU+RDNA3 GPU麻州黄金地段,自住投资两相宜--本周房源精选--Lynnfield/Melrose/Belmont投行实习第一次用Bloomberg,如何装作很熟练的样子?「附全套操作手册」相聚多伦多(二十二)幸或不幸hé bàng?hé bèng?阮玲玉,真的很美鸿发超市「2000 万美元」买下82街前Walmart超市!开设第4家Hông Phát分店!After Delayed Winter, China’s Ski Resorts Swing into High Gear今日arXiv最热NLP大模型论文:伯克利&DeepMind联合研究,RaLMSpec让检索增强LLM速度提升2-7倍!大模型+agent专场:LLM与Agent的最新进展 | 第16届中国R会议暨2023X-AGI大会分享一下最近collision center 修车经历Cell Stem Cell | 陈水冰团队有望利用类器官模型识别并开发新型潜在的胰腺癌疗法本年度最大的笑话: CFO 就是个会计,是个cost center。【求助】右腹部疼痛,MRI保险不批,求推荐Atlanta北部,自费MRI,质量好,价格较合适的image center
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。