AI大模型基础环境搭建

慈云数据 8个月前 (03-13) 技术支持 117 0

文章目录

  • AI大模型基础环境搭建
    • 简介
    • 搭建
      • 大模型基础环境通常会依赖以下package:
      • conda安装
      • demo环境搭建
      • 关于该git项目需要注意的一些点
      • 前后端封装
      • 实现效果截图 和 一点后续的废话:

        AI大模型基础环境搭建

        简介

        简单描述一下本文章里会教大家做的东西

        1、搭建大模型基础环境

        2、fastapi 封装接口 + 前端页面,做自己的语言模型

        3、github地址: https://github.com/lisiqil/start-chart

        搭建

        • 大模型基础环境

          大模型基础环境通常会依赖以下package:

          • PyTorch:PyTorch是一个用于深度学习的开源库,由Facebook AI Research开发。PyTorch广泛用于自然语言处理计算机视觉和语音识别等领域。

          • torchvision:torchvision是一个用于计算机视觉任务的库,提供了图像和视频处理的各种功能。torchvision基于PyTorch构建,方便在PyTorch项目中使用。

          • torchaudio:torchaudio是一个用于音频处理的库,提供了对音频信号进行处理的函数和预训练模型。。torchaudio也基于PyTorch构建,可以在PyTorch项目中轻松集成。

          • CUDA:CUDA是NVIDIA开发的一种并行计算平台和API模型,用于在NVIDIA GPU上加速计算任务。它允许开发人员编写在GPU上运行的代码,从而加快计算速度。PyTorch等深度学习库通常使用CUDA来进行GPU加速。

            结合所选取的大模型,参考 https://pytorch.org/get-started/previous-versions/ 选取合适的环境package组合。

            • Bitsandbytes:提供高效的位操作和字节操作功能。它可以帮助开发人员更轻松地处理二进制数据和进行位级操作。

              很多情况大模型所需要的服务器配额我们是无法满足的,这个时候需要bitsandbytes降低推理精度以达到降低所需显存配额的目的。

              conda安装

              如果确保机器只归你一个人使用可以不用安装

              • 下载并安装anaconda,选择你需要的版本即可上机安装:https://repo.anaconda.com/archive/

                以Tlinux为例:下载Anaconda3-2023.07-2-Linux-x86_64.sh并执行,等待安装完成。

                bash Anaconda3-2023.07-2-Linux-x86_64.sh
                
                • 是否安装成功
                  # 查看conda版本
                  conda --version
                  # 提示没有command,设置环境变量即可
                  # 获取conda的安装路径
                  # whereis conda
                  export PAHT=/usr/anconda/bin:$PATH
                  source ~/.bashrc
                  
                  • conda常用命令
                    # 查看当前存在的虚拟环境
                    conda env list
                    # 创建虚拟环境
                    conda create -n envName
                    # 激活虚拟环境
                    conda activate envName
                    # 退出虚拟环境
                    conda deactivate
                    # 删除虚拟环境
                    conda remove -n envName --all
                    # 虚拟环境中安装packge,以安装pytorch 1.13.1版本为例
                    conda install pytorch==1.13.1
                    # 更多的conda命令
                    conda --help
                    

                    demo环境搭建

                    以cuda11.3为例搭建大模型运行环境。

                    说明,cuda11.3较为典型,在bitsandbytes中没有预先编译适配11.3的so。所以11.3的整个环境搭建具备完整环境搭建流程,适配所有cuda版本环境搭建。

                    # 默认情况下腾讯云服务器上镜像已经安装了Nvidia驱动。
                    # 查询显卡信息,该命令将会输出当前显卡Driver Version,CUDA Version
                    nvidia-smi
                    # print CUDA Version: 11.4, 说明当前环境适配CUDA Version  import importlib.util
                    #     没错,我为了安装这个环境已经把bitsandbytes源码看完了
                    # 整个环境已经搭建完成
                    # 关于如何开启8int方式运行大模型可以参考
                    #     https://github.com/timdettmers/bitsandbytes.git
                    

                    至此demo中的大模型环境已经搭建完成。

                    大家可以在 huggingface 或者 百度飞浆 中获取自己想要的AI模型来愉快的玩耍

                    关于该git项目需要注意的一些点

                    cd 大模型目录
                    pip install -r requirements.txt
                    # 进入python命令行
                    python
                    
                    from transformers import AutoModelForCausalLM, AutoTokenizer
                    import torch
                    tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)
                    model = AutoModelForCausalLM.from_pretrained(checkpoint, trust_remote_code=True, torch_dtype=torch.float16)
                    model.to(device)
                    inputs = tokenizer.encode('现在我是javascript工程师,需要用nextjs实现文件上传,请你给出实现方案', return_tensors="pt").to(device)
                    outputs = model.generate(inputs, generation_config=generation_config)
                    output = tokenizer.decode(outputs[0], skip_special_tokens=False).rsplit(assistant_token, 1)[1].rstrip(end_token)
                    print(output)
                    """
                    其实你会得到一个让你非常无语的答案,哈哈哈。
                    #1•用户登录成功后,点击头像可以进入个人中心页面。
                    在个人中心页面有一个上传文件的按钮,,用户点击该按钮就可以选择要上传的文件并将其显示在页面上。
                    import os
                    def upload_ file (request):
                    ...
                    ...
                    """
                    

                    遇到这种情况不要慌,并不是大模型的能力有问题。这个引入一个初学大模型的概念 prompt 就是所谓的工程提示,如果我们给出合理的提示功能标签,那么大模型可以更好的识别问题。

                    常见的LLM通用提示标签有

                    • : 系统级提示
                    • : 用户输入
                    • :ai回答
                    • :通用结束标签

                      那么以上问题,通过合理的 prompt 之后是:

                      #   “你是一个javascript工程师
                      #       请用nextjs实现文件上传功能。”
                      

                      inputs 这里应该是:

                      inputs = tokenizer.encode(
                          '你是一个javascript工程师请用nextjs实现文件上传功能。', return_tensors="pt").to(device)
                      outputs = model.generate(inputs, generation_config=generation_config)
                      output = tokenizer.decode(outputs[0], 
                        skip_special_tokens=False).rsplit(assistant_token, 1)[1].rstrip(end_token)
                      print(output)
                      

                      前后端封装

                      前后端封装相对比较简单,主要干的就是:fastapi封装应用接口、大模型输出结果用接口返回给前端页面、前端页面收集到的问题和参数通过接口调用大模型。代码已传。

                      有点开发经验的同学应该能看懂,该文主要是分享记录大模型基础环境的搭建,就不赘述这部分内容啦。

                      实现效果截图 和 一点后续的废话:

                      • 本人手里也没有合适跑AI模型的机器,是在腾讯云上薅了一个新用户的福利,几十块租了一星期练手。后面机器到期了所以没法发链接给读者亲身体验,不过一些步骤有截图记录,同时项目上传了github仓库,会提供git地址。跑了 starchat(语言模型) 和 clip(图像识别)两个模型。

                      • 套壳后的 startchat ,如图:(哈哈)

                        在这里插入图片描述

                      • 看一下运行时的显存(跑起来差不多用了18个G)

                        请添加图片描述

                      • 这个是完整页面,前端页面有一些可调参数

                        请添加图片描述

                      • clip 运行的情况 (clip 相对没 starchat 这么吃显存)

                        在这里插入图片描述

                        在这里插入图片描述

                      • 应用的 github 地址:

                        https://github.com/lisiqil/start-chart

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon