大模型部署实战(一)——Ziya-LLaMA-13B

这篇具有很好参考价值的文章主要介绍了大模型部署实战(一)——Ziya-LLaMA-13B。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/llm/188/

6.10日更新增加了模型量化模型,现在的模型只需要一张A100(40GB显卡即可推理)

大模型部署实战(一)——Ziya-LLaMA-13B

(封面图由文心一格生成)

大模型部署实战(一)——Ziya-LLaMA-13B

Ziya-LLaMA-13B是IDEA-CCNL基于LLaMa的130亿参数的大规模预训练模型,具备翻译,编程,文本分类,信息抽取,摘要,文案生成,常识问答和数学计算等能力。目前姜子牙通用大模型已完成大规模预训练、多任务有监督微调和人类反馈学习三阶段的训练过程。本文主要用于Ziya-LLaMA-13B的本地部署。
在线体验地址:

  • 博主自己部署的地址:http://www.yourmetaverse.cn:39000/
  • 官方部署的地址:https://modelscope.cn/studios/Fengshenbang/Ziya_LLaMA_13B_v1_online/summary

本文所使用的代码详见:https://github.com/ChaosWang666/Ziya-LLaMA-13B-deployment

1. 部署准备

1.1 硬件环境

显卡最低显存为54GB,可以为一张A100(80GB)或者两张A100(40GB)。

6.10日更新增加了模型量化模型,现在的模型只需要一张A100(40GB显卡即可推理)

1.2 python环境

cpm_kernels==1.0.11
gradio==3.34.0
huggingface_hub==0.15.1
Pillow==9.5.0
torch==1.12.1+cu113
tqdm==4.64.1
transformers==4.29.2
accelerate==0.17.1

1.3 模型下载

  • (1)llama-13B原始参数下载
    原始参数可以通过下面网址下载。
    https://docs.google.com/forms/d/e/1FAIpQLSfqNECQnMkycAp2jP4Z9TFX0cGR4uf7b_fBxjY_OjhJILlKGA/viewform

  • (2)Ziya-LLaMA-13B-v1.1 delta参数下载
    delta参数进入下面网页下载。
    https://huggingface.co/IDEA-CCNL/Ziya-LLaMA-13B-v1.1/tree/main

  • (3)相关代码下载
    进入下面网页下载llama权重转hf权重脚本。
    https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/convert_llama_weights_to_hf.py
    进入下面网页下载llama权重转Ziya-LLaMA-13B权重脚本。
    https://github.com/IDEA-CCNL/Fengshenbang-LM/blob/main/fengshen/utils/apply_delta.py

2. 模型部署

首先说明一下项目的文件系统目录

-llama-13B
-llama-13B-convert
-ziya_v1.1_delta
-ziya_v1.1
-apply_delta.py
-convert_llama_weights_to_hf.py
-launch.py
-utils.py

其中llama-13B为llama原始参数存放的目录,llama-13B-convert为转换成huggingface形式的参数存放的目录,ziya_v1.1_delta为huggingface上的权重文件,ziya_v1.1为最终转换后的权重文件。launch.py为本地化部署文件,详见后续章节,utils.py为官方给的文件,直接从https://modelscope.cn/studios/Fengshenbang/Ziya_LLaMA_13B_v1_online/files下载即可。

2.1 llama-13B权重转换

首先第一步需要将llama-13B的原始权重转换成huggingface的权重形式,使用convert_llama_weights_to_hf.py脚本进行转换,转换代码如下:

python convert_llama_weights_to_hf.py --input_dir $你的llama-13B路径 --model_size 13B --output_dir $你的llama-13B模型转换后的路径

2.2 结合基础的llama权重和Ziya-LLaMA-13B delta权重得到Ziya-LLaMA-13B权重

使用如下代码得到最终的Ziya-LLaMA-13B权重。

python -m apply_delta --base $你的llama-13B模型转换后的路径 --target $你的最终权重存储路径 --delta $你下载的Ziya-LLaMA-13B权重路径

2.3 模型部署

使用下面这段代码进行模型部署。该代码修改自https://modelscope.cn/studios/Fengshenbang/Ziya_LLaMA_13B_v1_online/files
在官方代码的基础上增加了一些参数和优化内容。

import gradio as gr
import os
import gc
import torch


from transformers import BitsAndBytesConfig, AutoTokenizer
#指定环境的GPU,我的环境是2张A100(40GB)显卡,于是我设置了两张卡,也可以一张80GB的A100
#设置模型量化之后可以使用单张A100进行推理
os.environ['CUDA_VISIBLE_DEVICES'] = "0"
#这个utils文件直接下载官方给的文件即可
from utils import SteamGenerationMixin


class MindBot(object):
    def __init__(self):
    	#这个model_path为你本地的模型路径
        model_path = './ziya_v1.1'
        # 模型单精度推理的模型加载
        self.model = SteamGenerationMixin.from_pretrained(model_path, device_map='auto').half()
        # 模型量化推理的模型加载
        #self.model = SteamGenerationMixin.from_pretrained(model_path, device_map='auto',quantization_config=BitsAndBytesConfig(load_in_4bit=True))
        self.model.eval()
        
        self.tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=False)
    
    def build_prompt(self, instruction, history, human='<human>', bot='<bot>'):
        pmt = ''
        if len(history) > 0:
            for line in history:
                pmt += f'{human}: {line[0].strip()}\n{bot}: {line[1]}\n'
        pmt += f'{human}: {instruction.strip()}\n{bot}: \n'
        return pmt
    
    def interaction(
        self,
        instruction,
        history,
        max_new_tokens,
        temperature,
        top_p,
        max_memory=1024
    ):
               
        prompt = self.build_prompt(instruction, history)
        input_ids = self.tokenizer(prompt, return_tensors="pt").input_ids
        if input_ids.shape[1] > max_memory:
            input_ids = input_ids[:, -max_memory:]
            
        prompt_len = input_ids.shape[1]
        # stream generation method
        try:
            tmp = history.copy()
            output = ''
            with torch.no_grad():
                for generation_output in self.model.stream_generate(
                    input_ids.cuda(),
                    max_new_tokens=max_new_tokens, 
                    do_sample=True,
                    top_p=top_p, 
                    temperature=temperature, 
                    repetition_penalty=1., 
                    eos_token_id=2, 
                    bos_token_id=1, 
                    pad_token_id=0
                ):
                    s = generation_output[0][prompt_len:]
                    output = self.tokenizer.decode(s, skip_special_tokens=True)
                    # output = output.replace('\n', '<br>')
                    output = output.replace('\n', '\n\n')
                    tmp.append((instruction, output))
                    yield  '', tmp
                    tmp.pop()
                    # gc.collect()
                    # torch.cuda.empty_cache()
                history.append((instruction, output))
                print('input -----> \n', prompt)
                print('output -------> \n', output)
                print('history: ======> \n', history)
        except torch.cuda.OutOfMemoryError:
            gc.collect()
            torch.cuda.empty_cache()
            self.model.empty_cache()
            history.append((instruction, "【显存不足,请清理历史信息后再重试】"))
        return "", history
        
    def chat(self):
        
        with gr.Blocks(title='IDEA MindBot', css=".bgcolor {color: white !important; background: #FFA500 !important;}") as demo:
            with gr.Row():
                gr.Column(scale=0.25)
                with gr.Column(scale=0.5):
                    gr.Markdown("<center><h1>IDEA Ziya</h1></center>")
                    gr.Markdown("<center>姜子牙通用大模型V1.1是基于LLaMa的130亿参数的大规模预训练模型,具备翻译,编程,文本分类,信息抽取,摘要,文案生成,常识问答和数学计算等能力。目前姜子牙通用大模型已完成大规模预训练、多任务有监督微调和人类反馈学习三阶段的训练过程。</center>")
                gr.Column(scale=0.25)
            with gr.Row():
                gr.Column(scale=0.25)
                with gr.Column(scale=0.5):
                    chatbot = gr.Chatbot(label='Ziya').style(height=500)
                    msg = gr.Textbox(label="Input")
                # gr.Column(scale=0.25)
                with gr.Column(scale=0.25):
                    max_new_tokens = gr.Slider(0, 2048, value=1024, step=1.0, label="Max_new_tokens", interactive=True)
                    top_p = gr.Slider(0, 1, value=0.85, step=0.01, label="Top P", interactive=True)
                    temperature = gr.Slider(0, 1, value=0.8, step=0.01, label="Temperature", interactive=True)
            with gr.Row():
                gr.Column(scale=0.25)
                with gr.Column(scale=0.25):
                    clear = gr.Button("Clear")
                with gr.Column(scale=0.25):
                    submit = gr.Button("Submit")
                gr.Column(scale=0.25)
                
            msg.submit(self.interaction, [msg, chatbot,max_new_tokens,top_p,temperature], [msg, chatbot])
            clear.click(lambda: None, None, chatbot, queue=False)
            submit.click(self.interaction, [msg, chatbot,max_new_tokens,top_p,temperature], [msg, chatbot])
        return demo.queue(concurrency_count=10).launch(share=False,server_name="127.0.0.1", server_port=7886)
        

if __name__ == '__main__':
    mind_bot = MindBot()
    mind_bot.chat()

该代码中需要修改的地方已经在代码块上标出。

全面内容见github https://github.com/ChaosWang666/Ziya-LLaMA-13B-deployment文章来源地址https://www.toymoban.com/news/detail-491122.html


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

到了这里,关于大模型部署实战(一)——Ziya-LLaMA-13B的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 本地部署中文LLaMA模型实战教程,民间羊驼模型

    博文1:本地部署中文LLaMA模型实战教程,民间羊驼模型(本博客) 博文2:本地训练中文LLaMA模型实战教程,民间羊驼模型 博文3:精调训练中文LLaMA模型实战教程,民间羊驼模型 LLaMA大部分是英文语料训练的,讲中文能力很弱。如果我们想微调训练自己的LLM模型,基于一个大

    2024年02月04日
    浏览(47)
  • 【AI实战】开源中文 llama2 来了,30 分钟搭建 130 亿参数大模型 Llama2-Chinese-13b-Chat

    Llama2 2023年7月19日:Meta 发布开源可商用模型 Llama2。 Llama2 是一个预训练和微调的生成文本模型的集合,其规模从70亿到700亿个参数不等。 LLaMA2 的详细介绍可以参考这篇文章:【大模型】更强的 LLaMA2 来了,开源可商用、与 ChatGPT 齐平 Llama2-Chinese Llama2中文社区 Llama2-Chinese Git

    2024年02月12日
    浏览(42)
  • 中文大语言模型 Llama-2 7B(或13B) 本地化部署 (国内云服务器、GPU单卡16GB、中文模型、WEB页面TextUI、简单入门)

            本文目的是让大家先熟悉模型的部署,简单入门;所以只需要很小的算力,单台服务器 单GPU显卡(显存不低于12GB),操作系统需要安装 Ubuntu 18.04。         准备一台服务器 单张英伟达GPU显卡(显存不低于12GB),操作系统需要安装 Ubuntu 18.04 (具体安装过程忽略)

    2024年02月08日
    浏览(46)
  • Windows11下私有化部署大语言模型实战 langchain+llama2

    CPU:锐龙5600X 显卡:GTX3070 内存:32G 注:硬件配置仅为博主的配置,不是最低要求配置,也不是推荐配置。该配置下计算速度约为40tokens/s。实测核显笔记本(i7-1165g7)也能跑,速度3tokens/s。 Windows系统版本:Win11专业版23H2 Python版本:3.11 Cuda版本:12.3.2 VS版本:VS2022 17.8.3 lan

    2024年02月03日
    浏览(214)
  • 使用llama.cpp在本地搭建vicuna 13B语言模型

    有人做了windows下的脚本放到github上了,直接运行就可以了。我在本机试了一下13B的模型能运行,但生成速度非常慢,回复一个问题基本上要花5分钟以上的时间。我的机器配置 3900X 32G内存。 https://github.com/mps256/vicuna.ps1

    2024年02月11日
    浏览(55)
  • 【大模型系列 06】LLaMA-7B/13B for PyTorch 昇腾迁移

    https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/PyTorch/built-in/foundation/LLaMA-13B LLaMA是由Meta AI发布的大语言系列模型,完整的名字是Large Language Model Meta AI。LLaMA按照参数量的大小分为四个型号:LLaMA-7B、LLaMA-13B、LLaMA-30B与LLaMA-65B。LLaMA 模型的效果极好,LLaMA-13B在大多数基准测试中的表现

    2024年02月12日
    浏览(58)
  • 【AI实战】llama.cpp 量化部署 llama-33B

    量化模型是将模型中的高精度浮点数转化成低精度的int或其他类型得到的新的,花销更小,运行更快的模型。 Inference of LLaMA model in pure C/C++。 llama.cpp 运行期占用内存更小,推断速度也更快,同样的模型,7B 基础模型举例,32位浮点数的模型占用空间 27G,llama.cpp 量化后占用内

    2024年02月16日
    浏览(40)
  • 万元预算打造高质量13B私有模型,Colossal-AI LLaMA-2 开源方案再升级

    几个月前,Colossal-AI 团队仅利用8.5B token数据、15小时、数千元的训练成本 , 成功构建了性能卓越的中文LLaMA-2 7B 版本模型,在多个评测榜单性能优越。 在原有训练方案的基础上,Colossal-AI 团队再次迭代,并通过构建更为细致完善的数据体系,利用 25B token 的数据,打造了 效

    2024年01月20日
    浏览(65)
  • llama.cpp LLM模型 windows cpu安装部署;运行LLaMA-7B模型测试

    参考: https://www.listera.top/ji-xu-zhe-teng-xia-chinese-llama-alpaca/ https://blog.csdn.net/qq_38238956/article/details/130113599 cmake windows安装参考:https://blog.csdn.net/weixin_42357472/article/details/131314105 1、下载: 2、编译 3、测试运行 参考: https://zhuanlan.zhihu.com/p/638427280 模型下载: https://huggingface.co/nya

    2024年02月15日
    浏览(52)
  • llama.cpp LLM模型 windows cpu安装部署;运行LLaMA2模型测试

    参考: https://www.listera.top/ji-xu-zhe-teng-xia-chinese-llama-alpaca/ https://blog.csdn.net/qq_38238956/article/details/130113599 cmake windows安装参考:https://blog.csdn.net/weixin_42357472/article/details/131314105 1、下载: 2、编译 3、测试运行 参考: https://zhuanlan.zhihu.com/p/638427280 模型下载: https://huggingface.co/nya

    2024年02月16日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包