前言
LLaMA 3.1 是 Meta(Facebook 母公司)发布的系列大语言模型之一,属于 LLaMA(Large Language Model Meta AI)模型系列。LLaMA 模型的目标是通过更高效的设计在保持模型性能的前提下,显著降低其计算和资源需求。LLaMA 3.1 是该系列的最新版本,继承了前面版本,如 LLaMA 1 和 LLaMA 2 的许多技术优势,并对模型架构、训练数据和推理能力进行了改进。
一、LLaMA 3.1 的特点
LLaMA 3.1 主要有以下 4 个特点:
- 规模较大且高效:LLaMA 3.1 在参数量上相比前代有所增加,但在设计和训练过程中注重提高效率,因此能够在相对较少的资源下达到与更大模型相似的性能水平。
- 更多的训练数据:该版本的模型通过更广泛、更丰富的语料库进行训练,覆盖了更多领域的信息,使得它在回答问题、生成内容以及自然语言理解方面更强大。
- 优化的推理性能:LLaMA 3.1 通过对推理算法和模型架构的优化,减少了推理时间,提高了在不同任务上的响应速度。
- 开源的方式:与前代模型类似,LLaMA 3.1 也继续采用开源模式,这意味着研究人员和开发人员可以在其基础上进行进一步的研究和开发。这种开放性是 Meta 希望推动 AI 社区共同进步的一个关键策略。
二、LLaMA 3.1 的优势
相较于 OpenAI 的 GPT 系列或 Google 的 PaLM 系列,LLaMA 系列模型的优势在于其高效性,即在保持较高的生成能力和理解能力的同时,资源消耗更低。LLaMA 3.1 通过对模型结构的精简和训练数据的多样化,在许多任务上能够提供接近甚至超过这些主流模型的性能。
三、LLaMA 3.1 部署流程
(一)创建实例
(1)登录后点击控制台,选择 GPU 云实例并创建实例。
(2)付费类型选择按量付费,示例配置选 4 NVIDIA-L40S。
(3)GPU、数据硬盘按照默认的即可。
(4)镜像框架选择 PyTorch 2.4.0,选择密钥对后点击立即创建。
(5)实例状态变为运行中时即实例创建成功。
(二)通过 JupyterLab 登录实例
通过 JupyterLab 界面访问实例环境。
(三)部署 LLaMA 3.1
使用 conda 管理环境,示例环境已经默认安装了 conda 24.5.0,直接创建环境即可。
在终端输入:
conda create -n llama3 python=3.12
第一次在终端使用 conda 命令,需要先进行 conda 初始化,初始化完成后重新开下终端。
conda init
初始化后切换到新创建的环境。
conda activate llama3
安装 LLaMA 3.1 需要的依赖。
pip install langchain==0.1.15
pip install streamlit==1.36.0
pip install transformers==4.44.0
pip install accelerate==0.32.1
依赖安装完毕后,需要下载 Llama-3.1-8B 模型,使用命令进行内网下载 Llama-3.1-8B-Instruct 模型即可。
wget [请替换为实际模型下载地址]
模型下载完成后解压缩 Llama-3.1-8B-Instruct.tar。
tar -xf Llama-3.1-8B-Instruct.tar
(四)使用教程
Llama-3.1-8B 模型下载完成后,新建 llamaBot.py 文件,输入以下内容:
from transformers import AutoTokenizer, AutoModelForCausalLM
torch
streamlit st
st.title()
st.caption()
model_name_or_path =
():
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=)
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, torch_dtype=torch.bfloat16).cuda()
tokenizer, model
tokenizer, model = get_model()
st.session_state:
st.session_state[] = []
msg st.session_state.messages:
st.chat_message(msg[]).write(msg[])
prompt := st.chat_input():
st.chat_message().write(prompt)
st.session_state.messages.append({: , : prompt})
input_ids = tokenizer.apply_chat_template(st.session_state[], tokenize=, add_generation_prompt=)
model_inputs = tokenizer([input_ids], return_tensors=).to()
generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=)
generated_ids = [output_ids[(input_ids):] input_ids, output_ids (model_inputs.input_ids, generated_ids)]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=)[]
st.session_state.messages.append({: , : response})
st.chat_message().write(response)
(st.session_state)


