LLaMA 3.1 模型在DAMODEL平臺的部署與實戰:打造智能聊天機器人

文章目錄

前言

一、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 生成對話內容并與用戶交互。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895947.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python爬蟲(25)】解鎖Python爬蟲:數據存儲的最優選擇與高效策略

【Python爬蟲】專欄簡介:本專欄是 Python 爬蟲領域的集大成之作,共 100 章節。從 Python 基礎語法、爬蟲入門知識講起,深入探討反爬蟲、多線程、分布式等進階技術。以大量實例為支撐,覆蓋網頁、圖片、音頻等各類數據爬取&#xff…

【復現DeepSeek-R1之Open R1實戰】系列8:混合精度訓練、DeepSpeed、vLLM和LightEval介紹

這里寫目錄標題 1 混合精度訓練1.1 FP16和FP321.2 優點1.3 存在的問題1.4 解決辦法 2 DeepSpeed3 vLLM3.1 存在的問題3.2 解決方法3.2.1 PagedAttention3.2.2 KV Cache Manager3.2.3 其他解碼場景 3.3 結論 4 LightEval4.1 主要功能4.2 使用方法4.3 應用場景 本文繼續深入了解O…

使用 FFmpeg 剪輯視頻指南

FFmpeg 是一個功能強大的多媒體處理工具,可以進行視頻和音頻的剪輯、合并、轉碼等操作。本文將詳細介紹如何使用 FFmpeg 進行視頻剪輯,并通過實例幫助你快速掌握剪輯技巧。我們會從最基礎的剪切功能講起,再延伸到一些高級操作,如指…

【分布式理論15】分布式調度1:分布式資源調度的由來與過程

文章目錄 一、操作系統的資源調度:從單核到多核二、 分布式系統的資源調度:從單臺服務器到集群三、 固定資源映射四、 動態資源分配:靈活的任務-資源匹配五、 資源調度過程:從申請到執行 本文主要討論主題: 從操作系統…

【Linux C/C++開發】Linux系統輕量級的隊列緩存mqueue

前言 開發設計時,通常會對業務流程進行模塊化,有些流程之間,不要求同步,但又需要傳遞信息時,如果存儲到數據庫,效率降低很多,如果是存放在內存是最好的。此時可以選擇系統的IPC(進程…

Vue 實現通過URL瀏覽器本地下載 PDF 和 圖片

1、代碼實現如下: 根據自己場景判斷 PDF 和 圖片,下載功能可按下面代碼邏輯執行 const downloadFile async (item: any) > {try {let blobUrl: any;// PDF本地下載if (item.format pdf) {const response await fetch(item.url); // URL傳遞進入i…

計算機網絡基礎雜談(局域網、ip、子網掩碼、網關、DNS)

目錄 1. 簡單局域網的構成 2. IP 地址 3. 子網掩碼 4. IP地址詳解自定義IP 5. IP 地址詳解 6. 網關 7. DNS 域名解析 8. ping 1. 簡單局域網的構成 交換機是組建局域網最重要的設備,換句話說,沒有交換機就沒法搭建局域網 交換機不能讓局域網連…

Thor: 統一AI模型網關的革新之選

項目價值 Thor(雷神托爾)作為一個強大的AI模型管理網關,解決了當前AI領域一個關鍵痛點:不同AI服務商的API格式各異,集成成本高。Thor通過將各種AI模型的獨特格式統一轉換為OpenAI格式,顯著降低了開發者的使用門檻和維護成本。 核…

25年2月通信基礎知識補充:多普勒頻移與多普勒擴展、3GPP TDL信道模型

看文獻過程中不斷發現有太多不懂的基礎知識,故長期更新這類blog不斷補充在這過程中學到的知識。由于這些內容與我的研究方向并不一定強相關,故記錄不會很深入請見諒。 【通信基礎知識補充7】25年2月通信基礎知識補充1 一、多普勒頻移與多普勒擴展傻傻分不…

【Python】Python入門——筆記合集

哈哈 00、環境搭建 學習Python,首先需要搭建一個本地開發環境,或是使用線上開發環境(各類練習網站),這篇博客里主要記錄了本地開發環境的配置方法。內容包括python解釋器的安裝以及pycharm的安裝、漢化等。 博客地…

為什么mvcc中?m_ids 列表并不等同于 min_trx_id 和 max_trx_id 之間的所有事務 ID

首先我們要明確 m_ids 表示創建 ReadView 時,系統中所有活躍(未提交)事務的事務 ID 列表。 僅包含當前未提交的事務,與事務 ID 的數值范圍無關。 min_trx_id 是 m_ids 中的最小值。若 m_ids 為空,則 min_trx_id 等于…

使用 Spark NLP 實現中文實體抽取與關系提取

在自然語言處理(NLP)領域,實體抽取和關系提取是兩個重要的任務。實體抽取用于從文本中識別出具有特定意義的實體(如人名、地名、組織名等),而關系提取則用于識別實體之間的關系。本文將通過一個基于 Apache Spark 和 Spark NLP 的示例,展示如何實現中文文本的實體抽取和…

FPGA開發要學些什么?如何快速入門?

隨著FPGA行業的不斷發展,政策的加持和投入的研發,近兩年FPGA行業的薪資也是水漲船高,一些人轉行后拿到了薪資30W,甚至有一些能力強的人可以拿到60W,看到這里想必不少人表示很心動,但又不知道怎么轉&#xf…

使用Python和正則表達式爬取網頁中的URL數據

在數據抓取和網絡爬蟲開發中,提取網頁中的URL是一個常見的需求。無論是用于構建網站地圖、分析鏈接結構,還是進行內容聚合,能夠高效地從HTML文檔中提取URL都是一個重要的技能。Python作為一種強大的編程語言,結合其正則表達式模塊…

人工智能之目標追蹤DeepSort源碼解讀(yolov5目標檢測,代價矩陣,余弦相似度,馬氏距離,匹配與預測更新)

要想做好目標追蹤,須做好目標檢測,所以這里就是基于yolov5檢測基礎上進行DeepSort,叫它為Yolov5_DeepSort。整體思路是先檢測再追蹤,基于檢測結果進行預測與匹配。 一.參數與演示 這里用到的是coco預訓練人的數據集: 二.針對檢測結果初始化track 對每一幀數據都輸出…

C++藍橋杯基礎篇(四)

片頭 嗨~小伙伴們,大家好!今天我們來學習C藍橋杯基礎篇(四),繼續練習相關習題。準備好了嗎?咱們開始咯~ 題目1 連續整數相加 思路分析: 這道題,我們可以把從鍵盤中讀取n寫在while循…

YOLOv12從入門到入土(含結構圖)

論文鏈接:https://arxiv.org/abs/2502.12524 代碼鏈接:https://github.com/sunsmarterjie/yolov12 文章摘要: 長期以來,增強YOLO框架的網絡架構一直至關重要,但一直專注于基于cnn的改進,盡管注意力機制在建…

SpringSecurity基于配置方法控制訪問權限:MVC匹配器、Ant匹配器

Spring Security 是一個功能強大且高度可定制的身份驗證和訪問控制框架。在 Spring Security 中,可以通過配置方法來控制訪問權限。認證是實現授權的前提和基礎,在執行授權操作前需要明確目標用戶,只有明確目標用戶才能明確它所具備的角色和權…

【iOS】SwiftUI狀態管理

State ObservedObject StateObject 的使用 import SwiftUIclass CountModel: ObservableObject {Published var count: Int 0 // 通過 Published 標記的變量會觸發視圖更新init() {print("TimerModel initialized at \(count)")} }struct ContentView: View {State…

跟著 Lua 5.1 官方參考文檔學習 Lua (3)

文章目錄 2.5 – Expressions2.5.1 – Arithmetic Operators2.5.2 – Relational Operators2.5.3 – Logical Operators2.5.4 – Concatenation2.5.5 – The Length Operator2.5.6 – Precedence2.5.7 – Table Constructors2.5.8 – Function Calls2.5.9 – Function Definiti…