模型介绍
Alpaca模型是斯坦福大学研发的LLM(Large Language Model,大语言)开源模型,是一个在52K指令上从LLaMA 7B(Meta公司开源的7B)模型微调而来,具有70亿的模型参数(模型参数越大,模型的推理能力越强,当然随之训练模型的成本也就越高)。
LoRA,英文全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,这是微软的研究人员为了解决大语言模型微调而开发的一项技术。如果想让一个预训练大语言模型能够执行特定领域内的任务,一般需要做fine-tuning,但是目前推理效果好的大语言模型参数维度非常非常大,有些甚至是上千亿维,如果直接在大语言模型上做fine-tuning,计算量会非常的大,成本也会非常的高。
’LoRA的做法是冻结预训练好的模型参数,然后在每个Transformer块里注入可训练的层,由于不需要对模型的参数重新计算梯度,所以,会大大的减少计算量。
具体如下图所示,核心思想是在原始预训练模型增加一个旁路,做一个降维再升维的操作。训练的时候固定预训练模型的参数,只训练降维矩阵 A 与升维矩阵 B。而模型的输入输出维度不变,输出时将 BA 与预训练语言模型的参数叠加。
用随机高斯分布初始化 A,用 0 矩阵初始化 B。这样能保证训练时,新增的旁路BA=0,从而对模型结果没有影响。在推理时,将左右两部分的结果加到一起,即h=Wx+BAx=(W+BA)x,所以,只要将训练完成的矩阵乘积BA跟原本的权重矩阵W加到一起作为新权重参数替换原始预训练语言模型的W即可,不会增加额外的计算资源。LoRA 的最大优势是训练速度更快,使用的内存更少。
本文进行本地化部署实践的Alpaca-lora模型就是Alpaca模型的低阶适配版本。本文将对Alpaca-lora模型本地化部署、微调和推理过程进行实践并描述相关步骤。
GPU服务器环境部署
本文进行部署的GPU服务器具有4块独立的GPU,型号是P40,单个P40算力相当于60个同等主频CPU的算力。
如果只是测试觉得物理卡太贵了,也可以使用“平替版”——GPU云服务器。相比于物理卡,用GPU云服务器搭建不仅能保障弹性的高性能计算,还有这些好处——
- 高性价比:按时计费,一小时才十几元,可以随时根据自己的需求调配;灵活资源管理、可扩展性、弹性伸缩等云计算优势,根据业务或个人训练的需要,快速调整计算资源,满足模型的训练和部署需求;
- 开放性:云计算的开放性让用户更容易进行资源的共享和协作,为AI模型的研究和应用提供了更广泛的合作机会;
- 丰富的API和SDK:云计算厂商提供了丰富的API和SDK,使得用户能够轻松地接入云平台的各种服务和功能,进行定制化开发和集成。
京东云的GPU云主机最近在做618活动,非常划算
https://www.php.cn/link/5d3145e1226fd39ee3b3039bfa90c95d
拿到GPU服务器我们首先就是安装显卡驱动和CUDA驱动(是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题)。
显卡驱动需要到NVIDIA的官方网站去查找相应的显卡型号和适配的CUDA版本,下载地址:
https://www.nvidia.com/Download/index.aspx ,选择相应的显卡和CUDA版本就可以下载驱动文件啦。
我下载的文件是
NVIDIA-Linux-x86_64-515.105.01.run,这是一个可执行文件,用root权限执行即可,注意安装驱动过程中不能有运行的nvidia进程,如果有需要全部kill掉,否则会安装失败,如下图所示:
然后一路next,没有报错的话就安装成功啦。为了后续查看显卡资源情况,最好还是再安装一个显卡监控工具,比如nvitop,用pip install nvitop即可,这里注意,由于不同服务器python版本有差异,最好安装anaconda部署自己的私有python空间,防止运行时报各种奇怪的错误,具体步骤如下:
1.安装anaconda 下载方式:wget
https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh。 安装命令: sh Anaconda3-5.3.0-Linux-x86_64.sh 每个安装步骤都输入“yes”,最后conda init后完成安装,这样每次进入安装用户的session,都会直接进入自己的python环境。如果安装最后一步选择no,即不进行conda init,则后续可以通过source /home/jd_ad_sfxn/anaconda3/bin/activate来进入到私有的python环境。
2.安装setuptools 接下来需要安装打包和分发工具setuptools,下载地址:wget
https://files.pythonhosted.org/packages/26/e5/9897eee1100b166a61f91b68528cb692e8887300d9cbdaa1a349f6304b79/setuptools-40.5.0.zip 安装命令: unzip setuptools-40.5.0.zip cd setuptools-40.5.0/ python setup.py install
3.安装pip 下载地址:wget
https://files.pythonhosted.org/packages/45/ae/8a0ad77defb7cc903f09e551d88b443304a9bd6e6f124e75c0fbbf6de8f7/pip-18.1.tar.gz 安装命令: tar -xzf pip-18.1.tar.gz cd pip-18.1 python setup.py install
至此,漫长的安装过程终于告一段落了,我们现在创建一个私有的python空间,执行
conda create -n alpaca pythnotallow=3.9conda activate alpaca
然后验证一下,如下图所示说明已经创建成功啦。
模型训练
上文已经把GPU服务器的基础环境安装好了,下面我们就要开始激动人心的模型训练了(激动ing),在训练之前我们首先需要下载模型文件,下载地址:
https://github.com/tloen/alpaca-lora ,整个模型都是开源的,真好!首先把模型文件下载到本地,执行git clone https://github.com/tloen/alpaca-lora.git .。
本地会有文件夹alpaca-lora,然后cd alpaca-lora到文件夹内部执行
pip install -r requirements.txt
这个过程可能会比较慢,需要从网上下载大量的依赖包,过程中可能也会报各种包冲突,依赖没有等问题,这块只能见招拆招,缺什么装什么(解决包依赖和版本冲突确实是个头疼的事情,不过这步做不好,模型也跑不起来,所以只能耐心的一点一点解决),这里痛苦的过程就不赘述了,因为不同机器可能遇到的问题也不太一样,参考意义不是很大。
如果安装过程执行完成,并没再有报错信息,并提示Successful compeleted,那么恭喜你啦,万里长征已经走完一半啦,你已经离成功很近了,再坚持一下下就很有可能成功啦:)。
由于我们的目标是对模型进行fine-tuning,所以我们得有一个fine-tuning的目标,由于原始模型对中文支持并不好,所以我们的目标就有了,用中文语料库让模型更好的支持中文,这个社区也给我准备好了,我们直接下载中文的语料库就好了,在本地执行 wget
https://github.com/LC1332/Chinese-alpaca-lora/blob/main/data/trans_chinese_alpaca_data.json?raw=true ,将后面模型训练用到的语料库下载到alpaca-lora根目录下(后面方便使用)。
语料库的内容就是很多的三元组(instruction,input,output,如下图所示),instruction就是指令,让模型做什么事,input就是输入,output是模型的输出,根据指令和输入,训练模型应该输出什么信息,让模型能够更好的适应中文。
好的,到现在为止,万里长征已经走完2/3了,别着急训练模型,我们现在验证一下GPU环境和CUDA版本信息,还记得之前我们安装的nvitop嘛,现在就用上了,在本地直接执行nvitop,我们就可以看到GPU环境和CUDA版本信息了,如下图:
在这里我们能够看到有几块显卡,驱动版本和CUDA版本等信息,当然最重要的我们还能看到GPU资源的实时使用情况。
怎么还没到模型训练呢,别着急呀,这就来啦。
我们先到根目录下然后执行训练模型命令:
如果是单个GPU,那么执行命令即可:
python finetune.py \--base_model 'decapoda-research/llama-7b-hf' \--data_path 'trans_chinese_alpaca_data.json' \--output_dir './lora-alpaca-zh'
如果是多个GPU,则执行:
WORLD_SIZE=2 CUDA_VISIBLE_DEVICES=0,1 torchrun \--nproc_per_node=2 \--master_port=1234 \finetune.py \--base_model 'decapoda-research/llama-7b-hf' \--data_path 'trans_chinese_alpaca_data.json' \--output_dir './lora-alpaca-zh'
如果可以看到进度条在走,说明模型已经启动成功啦。
在模型训练过程中,每迭代一定数量的数据就会打印相关的信息,会输出损失率,学习率和代信息,如上图所示,当loss波动较小时,模型就会收敛,最终训练完成。
我用的是2块GPU显卡进行训练,总共训练了1904分钟,也就是31.73个小时,模型就收敛了,模型训练是个漫长的过程,所以在训练的时候我们可以适当的放松一下,做点其他的事情:)。
模型推理
模型训练好后,我们就可以测试一下模型的训练效果了,由于我们是多个GPU显卡,所以想把模型参数加载到多个GPU上,这样会使模型推理的更快,需要修改
generate.py 文件,添加下面这样即可。
然后我们把服务启起来,看看效果,根目录执行:
python generate.py --base_model "decapoda-research/llama-7b-hf" \--lora_weights './lora-alpaca-zh' \--load_8bit
其中./lora-alpaca-zh目录下的文件,就是我们刚刚fine tuning模型训练的参数所在位置,启动服务的时候把它加载到内存(这个内存指的是GPU内存)里面。
如果成功,那么最终会输出相应的IP和Port信息,如下图所示:
我们可以用浏览器访问一下看看,如果能看到页面,就说明服务已经启动成功啦。
激动ing,费了九牛二虎之力,终于成功啦!!
因为我们目标是让模型说中文,所以我们测试一下对中文的理解,看看效果怎么样?
简单的问题,还是能给出答案的,但是针对稍微复杂一点的问题,虽然能够理解中文,但是并没有用中文进行回答,训练后的模型还是不太稳定啊。
在推理的时候我们也可以监控一下GPU的变化,可以看到GPU负载是比较高的,说明GPU在进行大量的计算来完成推理。
总结
1.效果问题:由于语料库不够丰富,所以目前用社区提供的语料库训练的效果并不是很好,对中文的理解力有限,如果想训练出能够执行特定领域的任务,则需要大量的语料支持,同时训练时间也会更长;
2. 推理时间问题:由于目前部署的GPU服务器有4块GPU,能够执行的有3块,基于3块GPU,在推理的时候还是比较吃力的,执行一次交互需要大概30s-1min,如果达到chatGPT那样实时返回,则需要大量的算力进行支持,可以反推,chatGPT后台肯定是有大集群算力支持的,所以如果想做成服务,成本投入是需要考量的一个问题;
3. 中文乱码问题:在input为中文的时候,有时候返回结果会乱码,怀疑跟切词有关,由于中文的编码问题,中文不像英文以空格区分,所以可能会有一定的乱码情况产生,调用open AI 的API也会有这种情况,后面看看社区是否有相应解决办法;
4. 模型选择问题:由于目前GPT社区比较活跃,模型的产生和变化也是日新月异,由于时间仓促,目前只调研了alpaca-lora模型的本地化部署,后面针对实际落地的应用应该也会有更好的更低成本的落地方案,需要持续跟进社区的发展,选择合适的开源方案。
京东云P40型号GPU的【ChatGLM语言模型】实践篇详见:https://www.php.cn/link/f044bd02e4fe1aa3315ace7645f8597a
作者:京东零售 骆永健
内容来源:京东云开发者社区
以上是GPT大语言模型Alpaca-lora本地化部署实践的详细内容。更多信息请关注PHP中文网其他相关文章!
![无法使用chatgpt!解释可以立即测试的原因和解决方案[最新2025]](https://img.php.cn/upload/article/001/242/473/174717025174979.jpg?x-oss-process=image/resize,p_40)
ChatGPT无法访问?本文提供多种实用解决方案!许多用户在日常使用ChatGPT时,可能会遇到无法访问或响应缓慢等问题。本文将根据不同情况,逐步指导您解决这些问题。 ChatGPT无法访问的原因及初步排查 首先,我们需要确定问题是出在OpenAI服务器端,还是用户自身网络或设备问题。 请按照以下步骤进行排查: 步骤1:检查OpenAI官方状态 访问OpenAI Status页面 (status.openai.com),查看ChatGPT服务是否正常运行。如果显示红色或黄色警报,则表示Open

2025年5月10日,麻省理工学院物理学家Max Tegmark告诉《卫报》,AI实验室应在释放人工超级智能之前模仿Oppenheimer的三位一体测试演算。 “我的评估是'康普顿常数',这是一场比赛的可能性

AI音乐创作技术日新月异,本文将以ChatGPT等AI模型为例,详细讲解如何利用AI辅助音乐创作,并辅以实际案例进行说明。我们将分别介绍如何通过SunoAI、Hugging Face上的AI jukebox以及Python的Music21库进行音乐创作。 通过这些技术,每个人都能轻松创作原创音乐。但需注意,AI生成内容的版权问题不容忽视,使用时务必谨慎。 让我们一起探索AI在音乐领域的无限可能! OpenAI最新AI代理“OpenAI Deep Research”介绍: [ChatGPT]Ope

ChatGPT-4的出现,极大地拓展了AI应用的可能性。相较于GPT-3.5,ChatGPT-4有了显着提升,它具备强大的语境理解能力,还能识别和生成图像,堪称万能的AI助手。在提高商业效率、辅助创作等诸多领域,它都展现出巨大的潜力。然而,与此同时,我们也必须注意其使用上的注意事项。 本文将详细解读ChatGPT-4的特性,并介绍针对不同场景的有效使用方法。文中包含充分利用最新AI技术的技巧,敬请参考。 OpenAI发布的最新AI代理,“OpenAI Deep Research”详情请点击下方链

CHATGPT应用程序:与AI助手释放您的创造力!初学者指南 ChatGpt应用程序是一位创新的AI助手,可处理各种任务,包括写作,翻译和答案。它是一种具有无限可能性的工具,可用于创意活动和信息收集。 在本文中,我们将以一种易于理解的方式解释初学者,从如何安装chatgpt智能手机应用程序到语音输入功能和插件等应用程序所独有的功能,以及在使用该应用时要牢记的要点。我们还将仔细研究插件限制和设备对设备配置同步

ChatGPT中文版:解锁中文AI对话新体验 ChatGPT风靡全球,您知道它也提供中文版本吗?这款强大的AI工具不仅支持日常对话,还能处理专业内容,并兼容简体中文和繁体中文。无论是中国地区的使用者,还是正在学习中文的朋友,都能从中受益。 本文将详细介绍ChatGPT中文版的使用方法,包括账户设置、中文提示词输入、过滤器的使用、以及不同套餐的选择,并分析潜在风险及应对策略。此外,我们还将对比ChatGPT中文版和其他中文AI工具,帮助您更好地了解其优势和应用场景。 OpenAI最新发布的AI智能

这些可以将其视为生成AI领域的下一个飞跃,这为我们提供了Chatgpt和其他大型语言模型聊天机器人。他们可以代表我们采取行动,而不是简单地回答问题或产生信息

使用chatgpt有效的多个帐户管理技术|关于如何使用商业和私人生活的详尽解释! Chatgpt在各种情况下都使用,但是有些人可能担心管理多个帐户。本文将详细解释如何为ChatGpt创建多个帐户,使用时该怎么做以及如何安全有效地操作它。我们还介绍了重要的一点,例如业务和私人使用差异,并遵守OpenAI的使用条款,并提供指南,以帮助您安全地利用多个帐户。 Openai


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3汉化版
中文版,非常好用