从chatgpt掀起的ai浪潮真实发展迅猛,从去年年底ChatGpt 3.5发布时候的万人空巷,到现在随便找个机器就能像模像样的跑一个mini版出来。真是令人感叹。

背景

大模型是指具有大量参数的深度学习或机器学习模型,这些参数可以通过训练过程自动调整以捕获输入数据中的复杂关系。这类模型通常具有较深的网络结构和较多的神经元,以增加模型的表示能力和学习能力。大模型在诸如自然语言处理、计算机视觉和语音识别等领域取得了显著的成果。 大模型使用了许多高级技术,主要包括以下几个方面:

  1. 深度神经网络(Deep Neural Networks,DNNs)
  2. 卷积神经网络(Convolutional Neural Networks,CNNs)
  3. 循环神经网络(Recurrent Neural Networks,RNNs)和长短时记忆网络(Long Short-Term Memory,LSTM)
  4. Transformer 架构
  5. 预训练与微调(Pretraining and Fine-tuning)
  6. 分布式训练(Distributed Training)和混合精度训练(Mixed Precision Training)

LLaMA是由Meta AI发布的大语言系列模型,完整的名字是Large Language Model Meta AI。Llama这个单词本身是指美洲大羊驼,所以社区也将这个系列的模型昵称为羊驼系模型。LLaMA按照参数量的大小分为四个型号:LLaMA-7B、LLaMA-13B、LLaMA-30B与LLaMA-65B。这里的B是billion的缩写,指代模型的参数规模。故最小的模型7B包含70亿个参数,而最大的一款65B则包含650亿个参数。大语言模型训练过程大致可以分为四个阶段,其第一个阶段预训练所耗费的资源几乎占据了整个过程的99%——数千个GPU算力堆积在这里。这种规模的资源消耗远远超过普通人甚至是大部分公司的供应能力。而LLaMA的开源实际上为开源社区解决了参与的“门槛”问题。

获取中文模型

# 获取模型数据,此处需要科学上网。
git lfs install
git clone https://huggingface.co/LinkSoul/Chinese-Llama-2-7b-4bit

转化模型

# 拉取镜像
docker pull soulteary/llama2:converter

# 运行容器,将保持有大模型向量数据的文件夹映射到容器内部
docker run --ulimit memlock=-1 --ulimit stack=67108864 --rm -it -v `pwd`/Chinese-Llama-2-7b-4bit:/app/LinkSoul -v `pwd`/soulteary:/app/soulteary soulteary/llama2:converter bash

#使用镜像中的llama.cpp程序,将模型转化为CPU运算类型
python3 convert.py /app/LinkSoul/ --outfile /app/soulteary/Chinese-Llama-2-7b-ggml.bin

# 由于生成的模型有13GB,所以需要进一步精简模型,优化完成之后大约有3.6GB
./quantize /app/soulteary/Chinese-Llama-2-7b-ggml.bin /app/soulteary/Chinese-Llama-2-7b-ggml-q4.bin q4_0

部署

运行

# 拉取运行时环境
docker pull soulteary/llama2:runtime
# 运行镜像
docker run --ulimit memlock=-1 --ulimit stack=67108864 --rm -it -v `pwd`/soulteary:/app/soulteary soulteary/llama2:runtime bash
# 按照预设提示运行
./main -m /app/soulteary/Chinese-Llama-2-7b-ggml-q4.bin -n 256 --repeat_penalty 1.0 --color -i -r "User:" -f prompts/chat-with-bob.txt

范例

  1. 执行范例

llama2

  1. 资源占用

llama

参考

  1. LLaMA:开放高效的基础语言模型
  2. 一文读懂Llama2
  3. 构建能够使用 CPU 运行的 MetaAI LLaMA2 中文大模型
  4. 基于LLAMA的AI应用
  5. PUA·AI