文章目录
- 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 <= 11.4
# 下载并安装CUDA 11.3,需要注意的是:安装过程中会让你选择安装像,这里需要去除安装驱动。
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
sudo sh cuda_11.3.0_465.19.01_linux.run
# 设置环境变量,通常/usr/local/cuda-1x.x/bin,/usr/local/cuda-1x.x/lib64
export PATH=/usr/local/cuda-11.3/bin:$PATH
source ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.3/lib64
# 或者将/usr/local/cuda-11.3/lib64添加到/etc/ld.so.conf
##### conda和pip安装二选一 start ####
# 参考https://pytorch.org/get-started/previous-versions/
# 1、conda
conda create -n starchat
conda activate starchat
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
# 2、pip
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
#### conda和pip安装二选一 end ####
# 安装bitsandbytes
pip install bitsandbytes
# make对应版本的bitsandbytes
git clone https://github.com/timdettmers/bitsandbytes.git
cd bitsandbytes
CUDA_VERSION=11.3 make cuda11x
python setup.py install
CUDA_VERSION=11.3 make cuda11x_nomatmul
python setup.py install
# 编译好的so通常在build/lib/bitsandbytes路径下,libbitsandbytes_cuda113.so, libbitsandbytes_cuda113_nocublaslt.so
# 将这两个文件放在python/site-packages/bitsandbytes目录下
# 根据服务器环境复制到对应的目录下
#### start ####
# 1、conda
# 如conda环境中使用的python3.10
cp build/lib/bitsandbytes/libbitsandbytes_cuda113.so /root/.conda/envs/starchat/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda113.so
cp build/lib/bitsandbytes/libbitsandbytes_cuda113_nocublaslt.so /root/.conda/envs/starchat/lib/python3.10/site-packages/bitsandbytes/libbitsandbytes_cuda113_nocublaslt.so
# 2、非conda,使用的是python3.8
cp build/lib/bitsandbytes/libbitsandbytes_cuda113.so /usr/local/lib64/python3.8/site-packages/bitsandbytes/libbitsandbytes_cuda113.so
cp build/lib/bitsandbytes/libbitsandbytes_cuda113_nocublaslt.so /usr/local/lib64/python3.8/site-packages/bitsandbytes/libbitsandbytes_cuda113_nocublaslt.so
#### end ####
# 测试bitsandbytes
python -m bitsandbytes
# success print:True
# 否则,这里可能存在两个缺少依赖的报错:
# 1、No module named 'scipy'。解决:pip install scipy
# 2、No module named 'triton.language'。解决:pip install triton
# 安装完成triton后依然报错相同的错误,那么需要修改下/usr/local/lib64/python3.8/site-packages/bitsandbytes/triton/triton_util.py关于引用importlib的方式
# 修改代码import importlib -> 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通用提示标签有
- <|system|>: 系统级提示
- <|user|>: 用户输入
- <|assistant|>:ai回答
- <|end|>:通用结束标签
那么以上问题,通过合理的 prompt 之后是:
# “<|system|>你是一个javascript工程师<|end|>
# <|user|>请用nextjs实现文件上传功能。<|end|>”
inputs 这里应该是:
inputs = tokenizer.encode(
'<|system|>你是一个javascript工程师<|end|><|user|>请用nextjs实现文件上传功能。<|end|>', 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大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把全套AI技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓