Meta 的 Llama:不僅僅是語言模型

Llama 的演進:挑戰現狀

當 Llama 首次出現時,它挑戰了來自科技巨頭的大型、封閉原始碼 LLM 的主導地位。Meta AI 採用了一種策略,專注於更小、更通用的模型。其核心理念是,這些在大量 token 上訓練的較小模型,更容易且更具成本效益地針對特定任務進行重新訓練和微調。這種方法與建立更大、更耗資源的模型的趨勢形成鮮明對比。

然而,Llama 的’開源’性質是一個爭論的話題。Meta Llama 授權條款包括對商業和可接受用途的特定限制。雖然這些限制可以說是合理的,但它們與 Open Source Initiative 對開源的嚴格定義相衝突。這導致了關於 Llama 是否真正符合開源資格的持續討論。

應對法律挑戰:版權問題

Llama 的發展並非沒有法律障礙。2023 年,Meta 面臨兩起作者提起的集體訴訟,他們聲稱他們的版權書籍未經許可被用於訓練 Llama。這些訴訟突顯了圍繞大型語言模型訓練數據的複雜版權問題。到目前為止,法院對作者的主張並未表示過多的同情。

擴展能力:Llama 不斷增長的模型家族

自 2023 年底以來,Meta AI 大幅擴展了 Llama 家族。這些模型不再局限於基於文本的互動。目前的 Llama 生態系統包括能夠處理文本和視覺輸入的多模態模型,以及為程式碼解釋和工具整合而設計的模型。此外,Meta 還引入了稱為 Llama Guard 的安全組件,以識別和減輕潛在的風險和攻擊,這些組件旨在成為稱為’Llama Stack’的整體框架的一部分。

以下是 Llama 家族中一些關鍵模型的更深入介紹(摘自 Meta AI 的模型卡):

Llama Guard 1:保護互動

Llama Guard 1 是一個基於 Llama 2 的 70 億參數模型。它充當輸入-輸出安全保障,對使用者提示(提示分類)和 LLM 回應(回應分類)中的內容進行分類。此模型有助於確保與基於 Llama 的系統進行更安全、更負責任的互動。

Llama Guard 採用六級分類法對潛在危害進行分類:

  • 暴力與仇恨: 宣揚針對個人或群體的暴力或仇恨的內容。
  • 性內容: 露骨的性內容或剝削、虐待或危害兒童的內容。
  • 槍支和非法武器: 與非法銷售、使用或改裝槍支和其他武器有關的內容。
  • 受管制或受控物質: 宣傳非法使用或銷售毒品、酒精或煙草的內容。
  • 自殺和自殘: 鼓勵或提供自殺或自殘指示的內容。
  • 犯罪策劃: 促進或策劃非法活動的內容。

Code Llama 70B:程式設計能力的三位一體

Code Llama 70B 標誌著 Llama 程式設計能力的重大擴展。此模型有三種不同的變體:

  • Code Llama: 為通用程式碼合成和理解而設計的基礎模型。它可以生成程式碼、解釋程式碼功能並協助除錯。
  • Code Llama – Python: 專為 Python 程式設計量身定制的專業版本。此模型針對生成和理解 Python 程式碼進行了最佳化,使其成為 Python 開發人員的寶貴工具。
  • Code Llama – Instruct: 一種專注於遵循指令並確保更安全部署的變體。此模型對於生成符合特定準則和安全協議的程式碼特別有用。

所有三個變體都有不同的尺寸:70 億、130 億、340 億和 700 億參數。Code Llama 及其變體專為商業和研究用途而設計,主要用於英語和相關程式語言。有充分的證據表明 Code Llama 具有很強的程式設計能力。

Llama Guard 2:增強的安全分類

Llama Guard 2 建立在其前身的基礎上,提供增強的安全分類功能。這個基於 Llama 3 的 80 億參數模型經過訓練,可以預測 11 個類別的安全標籤,與 MLCommons 的危害分類法保持一致。

Llama Guard 2 涵蓋的危害類別包括:

  • S1:暴力犯罪: 與暴力犯罪行為相關的內容。
  • S2:非暴力犯罪: 與非暴力犯罪行為相關的內容。
  • S3:性相關犯罪: 涉及性犯罪的內容。
  • S4:兒童性剝削: 剝削、虐待或危害兒童的性內容。
  • S5:專業建議: 專業領域(例如,醫療、法律、金融)中不合格或誤導性的建議。
  • S6:隱私: 未經同意侵犯隱私或洩露個人資訊的內容。
  • S7:智慧財產權: 侵犯智慧財產權的內容。
  • S8:不分青紅皂白的武器: 與造成廣泛和不分青紅皂白傷害的武器有關的內容。
  • S9:仇恨: 對個人或群體表達仇恨或偏見的內容。
  • S10:自殺和自殘: 宣傳或提供自殺或自殘指示的內容。
  • S11:性內容: 露骨的性內容。

Meta Llama 3:對話的多功能性

Meta Llama 3 提供兩種尺寸,80 億和 700 億參數,具有預訓練和指令微調變體。指令微調模型專門針對基於對話的應用程式進行了最佳化,使其適用於聊天機器人和對話式 AI 系統。

Prompt Guard:防禦惡意輸入

Prompt Guard 是一個分類器模型,旨在檢測惡意提示,包括越獄(嘗試繞過安全限制)和提示注入(嘗試通過精心設計的輸入來操縱模型的輸出)。Meta AI 建議使用特定於應用程式的數據對 Prompt Guard 進行微調,以實現最佳效能。

與 Llama Guard 不同,Prompt Guard 不需要特定的提示結構。它對字串輸入進行操作,將其分類為安全或不安全(在兩個不同的嚴重性級別)。它是一個僅輸出標籤的 BERT 模型。

Llama Guard 3:多模態和多語言安全

Llama Guard 3 有三個版本:Llama Guard 3 1B、Llama Guard 3 8B 和 Llama Guard 3 11B-Vision。前兩個是純文本模型,而第三個則結合了 Llama 3.2 11B-Vision 模型的視覺理解能力。所有版本都是多語言的(對於純文本提示),並遵守 MLCommons 聯盟定義的危害類別。

Llama Guard 3 8B 也可用於 S14 類別,即程式碼解釋器濫用。重要的是要注意,Llama Guard 3 1B 模型並未針對此特定類別進行最佳化。

危害類別,在 Llama Guard 2 的基礎上擴展,包括:

  • S1:暴力犯罪
  • S2:非暴力犯罪
  • S3:性相關犯罪
  • S4:兒童性剝削
  • S5:誹謗
  • S6:專業建議
  • S7:隱私
  • S8:智慧財產權
  • S9:不分青紅皂白的武器
  • S10:仇恨
  • S11:自殺和自殘
  • S12:性內容
  • S13:選舉
  • S14:程式碼解釋器濫用

Meta Llama 3.1:多語言生成模型

Meta Llama 3.1 系列包括多語言大型語言模型,包括 80 億、700 億和 4050 億參數大小的預訓練和指令微調生成模型(文本輸入,文本輸出)。

支持的語言包括:英語、德語、法語、義大利語、葡萄牙語、印地語、西班牙語和泰語。

Meta Llama 3.2:增強的對話能力

Llama 3.2 系列具有多語言大型語言模型,包括 10 億和 30 億參數大小的預訓練和指令微調生成模型(文本輸入,文本輸出)。這些模型的量化版本也可用。Llama 3.2 指令微調的純文本模型針對多語言對話進行了最佳化,在代理檢索和摘要等任務中表現出色。1B 和 3B 模型是 Llama 3.1 的更小、功能較弱的衍生模型。

官方支持的語言有:英語、德語、法語、義大利語、葡萄牙語、印地語、西班牙語和泰語。然而,Llama 3.2 已經在比這八種語言更廣泛的語言上進行了訓練。

Llama 3.2-Vision:圖像推理和理解

Llama 3.2-Vision 系列引入了多模態大型語言模型。這些模型經過預訓練和指令微調,用於圖像推理,提供 110 億和 900 億參數大小(文本和圖像輸入,文本輸出)。指令微調模型針對視覺識別、圖像推理、字幕和回答有關圖像的一般問題進行了最佳化。

對於純文本任務,官方支持的語言是英語、德語、法語、義大利語、葡萄牙語、印地語、西班牙語和泰語。Llama 3.2 已經在更廣泛的語言集上進行了訓練,但對於圖像+文本應用程式,英語是唯一支持的語言。

Meta Llama 3.3:強大的 70B 模型

Meta Llama 3.3多語言大型語言模型是一個具有 700 億參數的預訓練和指令微調生成模型(文本輸入,文本輸出)。

支持的語言:英語、德語、法語、義大利語、葡萄牙語、印地語、西班牙語和泰語。

重要的是要理解,包括 Llama 3.2 在內的大型語言模型不適用於獨立部署。它們應該整合到具有適當安全護欄的綜合 AI 系統中。開發人員應實施系統安全保障措施,尤其是在構建代理系統時。

Llama 3.3、Llama 3.2 純文本模型和 Llama 3.1 內建支持以下工具:

  • Brave Search: 用於執行網路搜尋的工具調用。
  • Wolfram Alpha: 用於執行複雜數學計算的工具調用。
  • Code Interpreter: 使模型能夠輸出 Python 程式碼的工具調用。

注意:Llama 3.2 視覺模型支持使用文本+圖像輸入進行工具調用。

Llama Stack:統一框架

Llama 模型的數量之多可能令人不知所措。為了簡化選擇和整合過程,Meta 提供了 Llama Stack。此框架強調 Llama 模型,但也為相關功能提供適配器,例如用於檢索增強生成 (RAG) 的向量資料庫。

Llama Stack 目前支持 Python、Swift、Node 和 Kotlin 中的 SDK。它提供各種發行版,包括:

  • 本地發行版(使用 Ollama): 用於本地開發和測試。
  • 設備上發行版(iOS 和 Android): 用於在行動裝置上部署 Llama 模型。
  • GPU 發行版: 用於利用 GPU 的強大功能進行更快的處理。
  • 遠端託管發行版(Together 和 Fireworks): 用於通過基於雲端的服務訪問 Llama 模型。

Llama Stack 背後的核心概念是使開發人員能夠在本地構建應用程式,然後輕鬆過渡到生產環境。它甚至提供了一個互動式 Llama Stack Playground,用於針對遠端 Llama Stack 進行本地開發。

運行 Llama 模型:多功能部署選項

Llama 模型可以部署在各種平台上,包括 Linux、Windows、macOS 和雲端。量化的 Llama 模型,例如 Llama 3.2 和 Llama 3.2-Vision,可以在現代硬體上有效運行,甚至可以使用 Ollama 等工具在 M4 Pro MacBook Pro 等筆記型電腦上運行。

Meta 提供了有關部署和使用 Llama 模型的綜合操作指南。此外,還提供了與 LangChain 和 LlamaIndex 等流行框架的整合指南。

總之,Llama 已經超越了單純的語言模型,現在它是一個多模態 AI 框架,具有安全功能、程式碼生成和對多種語言的支持。Meta 的系統允許它部署在許多地方,但與訓練數據相關的法律問題,以及關於 Llama 是否開源的爭論仍在繼續。