文章目錄
前言
一、LLaMA 3.1 的特點
二、LLaMA3.1的優勢
三、LLaMA3.1部署流程
(一)創建實例
(二)通過JupyterLab登錄實例
(3)部署LLaMA3.1
(4)使用教程
總結
前言
LLama3.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 社區共同進步的一個關鍵策略。
二、LLaMA3.1的優勢
相較于 OpenAI 的 GPT 系列或 Google 的 PaLM 系列,LLaMA 系列模型的優勢在于其高效性,即在保持較高的生成能力和理解能力的同時,資源消耗更低。LLaMA 3.1 通過對模型結構的精簡和訓練數據的多樣化,在許多任務上能夠提供接近甚至超過這些主流模型的性能。
三、LLaMA3.1部署流程
DAMODEL地址:丹摩DAMODEL|讓AI開發更簡單!算力租賃上丹摩!
(一)創建實例
(1)登錄后點擊控制臺,選擇GPU云實例并創建實例
(2)付費類型選擇按量付費,示例配置選4 NVIDIA-L40S
(3)GPU、數據硬盤按照默認的即可
(4)鏡像框架選擇PyTorch 2.4.0,選擇密鑰對后點擊立即創建
(5)實例狀態變為運行中時即實例創建成功
(二)通過JupyterLab登錄實例
(3)部署LLaMA3.1
使用conda
?管理環境,DAMODEL示例已經默認安裝了?conda 24.5.0
?,直接創建環境即可
在終端輸入:
conda create -n llama3 python=3.12
效果圖:
第一次在終端使用conda命令,需要先進行conda初始化,初始化完成后重新開下終端
conda init
效果圖:
初始化后切換到新創建的環境
conda activate llama3
安裝LLaMA3.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 http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar
效果圖:
模型下載完成后解壓縮Llama-3.1-8B-Instruct.tar
tar -xf Llama-3.1-8B-Instruct.tar
(4)使用教程
Llama-3.1-8B模型下載完成后,新建llamaBot.py文件,輸入以下內容:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import streamlit as st# 創建一個標題和一個副標題
st.title("💬 LLaMA3.1 Chatbot")
st.caption("🚀 A streamlit chatbot powered by Self-LLM")# 定義模型路徑
mode_name_or_path = '/root/workspace/Llama-3.1-8B-Instruct'# 定義一個函數,用于獲取模型和tokenizer
@st.cache_resource
def get_model():# 從預訓練的模型中獲取tokenizertokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)tokenizer.pad_token = tokenizer.eos_token# 從預訓練的模型中獲取模型,并設置模型參數model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, torch_dtype=torch.bfloat16).cuda()return tokenizer, model# 加載LLaMA3的model和tokenizer
tokenizer, model = get_model()# 如果session_state中沒有"messages",則創建一個包含默認消息的列表
if "messages" not in st.session_state:st.session_state["messages"] = []# 遍歷session_state中的所有消息,并顯示在聊天界面上
for msg in st.session_state.messages:st.chat_message(msg["role"]).write(msg["content"])# 如果用戶在聊天輸入框中輸入了內容,則執行以下操作
if prompt := st.chat_input():# 在聊天界面上顯示用戶的輸入st.chat_message("user").write(prompt)# 將用戶輸入添加到session_state中的messages列表中st.session_state.messages.append({"role": "user", "content": prompt})# 將對話輸入模型,獲得返回input_ids = tokenizer.apply_chat_template(st.session_state["messages"],tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([input_ids], return_tensors="pt").to('cuda')generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512)generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]# 將模型的輸出添加到session_state中的messages列表中st.session_state.messages.append({"role": "assistant", "content": response})# 在聊天界面上顯示模型的輸出st.chat_message("assistant").write(response)print(st.session_state)
在終端中運行以下命令啟動 streamlit 服務,server.port
?可以更換端口:
streamlit run llamaBot.py --server.address 0.0.0.0 --server.port
使用丹摩平臺提供的端口映射功能,將內網端口映射到公網:
添加好后,通過示例端口的訪問鏈接即可打開LLaMA3.1 Chatbot交互界面,可以跟該機器人進行對話
四、總結
本文介紹了 LLaMA 3.1 模型的特點、優勢以及在 DAMODEL 平臺上的部署流程。LLaMA 3.1 是 Meta 發布的最新大語言模型,具有高效的計算設計和優異的推理性能。其主要優勢在于相較于 OpenAI 的 GPT 系列或 Google 的 PaLM 系列,LLaMA 3.1 在消耗較少資源的情況下依然能夠提供強大的生成和理解能力。
文章還詳細描述了如何通過 DAMODEL 平臺部署 LLaMA 3.1 的步驟,從創建 GPU 實例,到配置環境(使用 conda 管理 Python 環境),再到安裝必要的依賴和下載模型文件。最后,還展示了如何構建一個基于 Streamlit 的聊天機器人,通過 LLaMA 3.1 生成對話內容并與用戶交互。