背景介绍
AI是什么?
ChatGPT?AI发展简述
早期的AI机器人:微博微软小娜、小冰
可以进行简单的对话,短文本支持,长文本和上下文对话能力比较差。
中期:各种语音助手,Siri,小度,小爱音响
当前:ChatGPT,文心一言,车载语音助手,copilot等AI带来的经济收益
OpenAI: 市值在10个月内翻三倍,达800亿美元。
芯片行业:NVIDIA: 近两年成为第七个市值挺进万亿美元的公司,2023年更是突破2万亿美元,成为全球第三大市值上市公司,仅次于微软和苹果。
AMD: 市值大涨
……AI使用场景
文本对话(chatgpt, 文心一言, 云网融合)
文生图(stable diffusion),还存在少量问题
文生视频(OpenAI sora),存在比较大的问题
实例:NVIDIA DLSS,游戏内动态帧生成技术,改善低性能显卡的游戏表现。
- AI必要的一些基础知识
硬件平台:
Q: 为什么不用中央处理器(CPU),而使用图形处理器(GPU)?
CUDA核心(并行处理单元)可进行大量并行计算任务
Tensor Core: AI加速核心
从CPU和GPU来解释
CPU:14900K,8+16,总共24核心32线程,价格4000左右
GPU:RTX 4070,5888个CUDA核心,价格4000左右;
4090具备14592个CUDA核心,价格14000左右
如此多的核心可同时进行大量计算任务,机器学习模型涉及大规模的矩阵运算和深度神经网络层级计算。
显存(GPU Memory):用于一次性加载大模型的内存,一般与成品GPU绑定,GPU核心与BIOS程序固定了显存大小,显存越大能加载的大模型参数(见下)越大。
民用级:4070 12G GDDR6X,4090 24G GDDR6X
专业级:H100 80G,A6000 48G,NVLink(256xH100)
软件:
Python:为什么使用脚本语言?免编译随时修改随时运行调试,科学计算库丰富,底层可调用高性能语言(C/C++);
tensor/pytorch:张量(矢量,矩阵等,tensor),tensor库
transformer: Hugging Face的一个NLP(自然语言处理)包,可加载绝大部分预训练模型
大语言模型(LLM——Large Language Model)
自然语言与机器语言?
机器语言:0 1(汇编最接近)
编程语言:词法、语法、语义,编译为二进制(编译原理)
自然语言:词法、语法、语义,推理,思考,情绪,感情,隐藏含义……(日常生活场景,例子)大语言模型是什么?
大模型提供了推理能力,支持多种任务,并已经对特定的任务进行了预训练。常见的LLM大语言模型
国内:Chatglm系列(1, 2, 3),通义千问-QWen,Baichuan2等
国外:Meta-llama系列,OpenAI-ChatGPT,Google-Gemma,一些专业术语
Prompt:提示词,对人说人话,对AI说AI话,(实例:string,字符串 or 细绳?)
7B(Billion 10亿)参数: 存储知识和信息的变量,参数越多,记住的知识越多,输出结果更准确
Tokens: 模型可以理解和生成的最小意义单位(一个单词,一个标点等),越大可处理及可生成的内容越长
Hugging Face: 大模型仓库(科学上网)
如何在本地电脑上搭建大语言模型
准备工作
硬件环境
CPU:无具体要求,(R7 5800x)
内存:16G以上,推荐32G,(48G)
GPU:最好16G显存以上NVIDIA显卡(目前大模型基本都基于N卡CUDA),(RTX 4060Ti 16G)
硬盘:100G以上,最好1T以上,(2T SSD)
软件环境
环境(本人):
系统:Linux,(Archlinux,包管理器pacman)
软件:NVIDIA驱动程序,CUDA
python3.11(推荐可选:Anaconda/Miniconda管理环境)
网络:科学上网(下载大模型必要条件)
1 | (optional) conda create -n llmLearning python=3.11 # 可选:新建conda环境 |
transformers功能
任务 | 描述 | 模态 | Pipeline |
---|---|---|---|
文本分类 | 为给定的文本序列分配一个标签 | NLP | pipeline(task=“sentiment-analysis”) |
文本生成 | 根据给定的提示生成文本 | NLP | pipeline(task=“text-generation”) |
命名实体识别 | 为序列里的每个 token 分配一个标签(人, 组织, 地址等等) | NLP | pipeline(task=“ner”) |
问答系统 | 通过给定的上下文和问题, 在文本中提取答案 | NLP | pipeline(task=“question-answering”) |
掩盖填充 | 预测出正确的在序列中被掩盖的token | NLP | pipeline(task=“fill-mask”) |
文本摘要 | 为文本序列或文档生成总结 | NLP | pipeline(task=“summarization”) |
文本翻译 | 将文本从一种语言翻译为另一种语言 | NLP | pipeline(task=“translation”) |
图像分类 | 为图像分配一个标签 | Computer vision | pipeline(task=“image-classification”) |
图像分割 | 为图像中每个独立的像素分配标签(支持语义、全景和实例分割) | Computer vision | pipeline(task=“image-segmentation”) |
目标检测 | 预测图像中目标对象的边界框和类别 | Computer vision | pipeline(task=“object-detection”) |
音频分类 | 给音频文件分配一个标签 | Audio | pipeline(task=“audio-classification”) |
自动语音识别 | 将音频文件中的语音提取为文本 | Audio | pipeline(task=“automatic-speech-recognition”) |
视觉问答 | 给定一个图像和一个问题,正确地回答有关图像的问题 | Multimodal | pipeline(task=“vqa”) |
实例(文本分类):
1 | from transformers import pipeline |
实例(文本生成):
1 | from transformers import pipeline |
本地搭建
注:以下实例推荐使用GPU,不推荐使用CPU进行计算
以对话模型为例本地搭建
- 安装git及git lfs (大模型通常文件比较大,需要让git支持大文件):
1
2pacman -S git git-lfs
git lfs install - Hugging Face下载大模型
大模型大小基本都在20G以上,
也可以启动时下载,不过会很慢,最好提前下载,这里使用Google开源的gemma-2b-it模型
google/gemma-2b-it大模型需要申请使用权限,请先去 huggingface 申请权限1
git clone https://huggingface.co/google/gemma-2b-it /datad/llm/models/google/gemma-2b-it # 示例大模型存放地址
- 编写python代码加载调用大模型
编写python代码加载大模型,并调用大模型基础对话能力实例:1
pip install accelerate # 安装必要模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_name_or_path = "/datad/llm/models/google/gemma-2b-it" # 如果设置为 google/gemma-2b-it 会自动从huggingface上下载模型,时间较长
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
model = AutoModelForCausalLM.from_pretrained(
model_name_or_path,
device_map="auto", # 自动分配GPU设备
torch_dtype=torch.bfloat16
)
input_text = "写一首关于机器学习的诗歌"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))
使用开源项目提供更多功能
必要性:需要对外提供API,对外提供多种服务,支持外部接入训练微调,每个都手写太麻烦
项目:LLaMA-Factory
项目简介:
- 支持多种大模型
- 支持提供OpenAI风格的API接口服务
- 支持多种微调训练方法(增量预训练,指令监督微调等)
- 支持浏览器中进行对话及微调训练,也提供相应的脚本
- 支持多种算法:LoRA,QLoRA,Agent等,16G及以下显存推荐QLoRA+8精度
搭建步骤
安装依赖
1
2
3
4
5git clone https://github.com/hiyouga/LLaMA-Factory.git
conda create -n llama_factory python=3.11
conda activate llama_factory
cd LLaMA-Factory
pip install -e .启动项目
1
python src/train_web.py
浏览器中查看体验:localhost:7860
大模型path:/datad/llm/models/google/gemma-2b-it