呼叫 Hugging Face 上的 LLaMA 模型需要設定存取令牌、安裝必要的函式庫,並瞭解模型載入、停止條件設定、以及與 LangChain 的整合方式。本篇涵蓋了從環境設定到實際程式碼執行的完整流程,並提供效能最佳化建議。首先,需安裝 langchaintransformersaccelerate 等函式庫,並取得 Hugging Face 的存取權杖。接著,載入預訓練模型和分詞器,設定停止標準,建立 Hugging Face Pipeline,並將其封裝在 LangChain 中以方便使用。最後,示範如何與模型互動並提供處理大型模型執行時間的策略,例如儲存已載入的模型和分詞器、調整硬體組態以及限制生成文字長度。

使用 Hugging Face 呼叫 LLaMA 模型

在呼叫 Hugging Face 倉函式庫中的模型之前,需要注意的是,大多數模型都是私有的或受限制的。這意味著需要提供 Hugging Face 的存取令牌來進行身份驗證和存取模型。

以下是如何在載入 tokenizer 和模型時傳遞存取令牌:

!pip install langchain==0.2.0
!pip install transformers
!pip install torch
!pip install fasttext
from transformers import LlamaTokenizer, LlamaForCausalLM

model_name = "MetaAI/llama-7b"
access_token = "your_access_token"

tokenizer = LlamaTokenizer.from_pretrained(model_name, use_auth_token=access_token)

實作細節

在實作細節方面,需要注意以下幾點:

  • 必須先安裝所需的函式庫,包括langchaintransformerstorchfasttext
  • 需要匯入所需的類別,包括LlamaTokenizerLlamaForCausalLM
  • 必須指定模型名稱和存取令牌。
  • 使用from_pretrained方法載入 tokenizer 和模型,並傳遞存取令牌。

透過這些步驟,可以成功呼叫 LLaMA 模型並實作相關任務。同時,也可以探索其他 Meta AI 模型和其應用,從而更好地瞭解人工智慧的世界。

使用 Hugging Face 平臺的 LLaMA 模型

要使用 Hugging Face 平臺的 LLaMA 模型,首先需要安裝必要的函式庫,包括 langchaintransformersaccelerate。然後,需要登入 Hugging Face 帳戶並取得存取令牌。

登入 Hugging Face 帳戶

  1. 前往 Hugging Face 網站並登入您的帳戶。
  2. 點選右上角的「Settings」按鈕。
  3. 在設定頁面中,點選「Access Tokens」標籤。
  4. 點選「New token」按鈕建立新的存取令牌。
  5. 輸入令牌名稱和選擇所需的許可權。
  6. 複製生成的存取令牌。

載入預訓練模型和分詞器

import torch
from langchain import HuggingFacePipeline
from transformers import AutoModelForCausalLM, AutoTokenizer
from huggingface_hub import login

# 登入 Hugging Face 帳戶
login("your_access_token")

# 載入預訓練模型和分詞器
model_name = "Meta-Llama-3-8B"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

定義停止標準

from transformers import StoppingCriteria, StoppingCriteriaList

class StopOnTokens(StoppingCriteria):
    def __init__(self, end_of_sequence_token):
        self.end_of_sequence_token = end_of_sequence_token

    def __call__(self, input_ids, scores, **kwargs):
        if self.end_of_sequence_token in input_ids:
            return True
        return False

stopping_criteria = StoppingCriteriaList([StopOnTokens(tokenizer.eos_token_id)])

建立 Hugging Face 管道

from langchain import HuggingFacePipeline

pipeline = HuggingFacePipeline(
    model=model,
    tokenizer=tokenizer,
    stopping_criteria=stopping_criteria,
    max_new_tokens=512,
    sampling_method="top-k",
    temperature=0.7,
)

封裝管道以與 LangChain 整合

pipeline = HuggingFacePipeline(pipeline)

與模型互動

prompt = "請問人工智慧的潛在益處和風險是什麼?"
response = pipeline(prompt)
print(response)

注意:此程式碼可能需要較長時間才能完成。

1. 與 Hugging Face 進行驗證(如有需要)

在開始使用 Hugging Face 的模型之前,可能需要進行驗證以確保您有權存取特定的模型或功能。這通常涉及使用您的存取令牌進行登入。

login(token="您的存取令牌")

2. 載入模型和分詞器

為了使用特定的語言模型,首先需要載入該模型及其對應的分詞器。分詞器負責將輸入文字轉換為模型可以理解的格式。

模型識別碼 = "meta-llama/Meta-Llama-3-8B"
分詞器 = AutoTokenizer.from_pretrained(模型識別碼)
模型 = AutoModelForCausalLM.from_pretrained(
    模型識別碼,
    torch_dtype=torch.float16,  # 使用 float16 以提高記憶體效率
    device_map="auto"  # 自動使用可用的 GPU
)

3. 自定義停止標準(可選,但建議使用)

在生成文字時,定義何時停止生成非常重要。這可以根據特定的條件進行設定,例如當模型生成某個特定標籤時停止。

class 停止於標籤(停止標準):
    def __call__(self, 輸入標籤: torch.LongTensor, 得分: torch.FloatTensor, **kwargs) -> bool:
        停止標籤識別碼 = [分詞器.eos_token_id]  # 結束標籤的識別碼
        if 輸入標籤[0][-1] == 停止標籤識別碼[0]:
            return True
        return False

停止標準列表 = 停止標準列表([停止於標籤()])

內容解密:

上述程式碼片段展示瞭如何與 Hugging Face 進行驗證、載入語言模型和分詞器,以及定義自定義的停止標準。這些步驟對於使用 Hugging Face 的模型進行文字生成或其他自然語言處理任務是非常重要的。

  • login 函式用於進行驗證,以便存取特定的模型或功能。
  • AutoTokenizer.from_pretrainedAutoModelForCausalLM.from_pretrained 用於載入指定模型的分詞器和模型本身。torch_dtype=torch.float16 引數用於提高記憶體效率,而 device_map="auto" 引數則允許模型自動使用可用的 GPU 進行加速。
  • 停止於標籤 類別定義了一個自定義的停止標準,當模型生成結束標籤(EOS)時停止文字生成。這個類別實作了 __call__ 方法,以便它可以作為一個函式被呼叫。

圖表翻譯:

此流程圖描述了從載入模型和分詞器開始,到定義停止標準,然後進行文字生成,並根據停止標準決定是否繼續生成或停止的過程。

建立 Hugging Face Pipeline

要開始使用 Hugging Face 的語言模型,首先需要建立一個 pipeline。這個 pipeline 將負責管理模型的輸入和輸出,包括文字生成、分類別等任務。以下是建立 pipeline 的示例程式碼:

pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    max_new_tokens=256,
    stopping_criteria=stopping_criteria,
    do_sample=True,
    temperature=0.7,
    top_p=0.95,
)

在這個程式碼中,我們指定了 pipeline 的任務為text-generation,並傳入了模型、分詞器、最大新 token 數量、停止標準、取樣方式、溫度和 top-p 等引數。

封裝 Pipeline 在 LangChain 中

建立好 pipeline 後,需要將其封裝在 LangChain 中,以便於後續的互動和使用。以下是封裝 pipeline 的示例程式碼:

llm = HuggingFacePipeline(pipeline=pipe)

這樣就完成了 pipeline 的封裝,現在可以使用llm物件進行文字生成和互動了。

與模型互動

現在可以使用llm物件與模型互動,生成文字。以下是示例程式碼:

prompt = "What are the potential benefits and risks of artificial intelligence?"
output = llm(prompt)
print(output)

在這個示例中,我們傳入了一個提示字串,然後列印預出了模型生成的文字。

處理大型模型的執行時間

當使用 Hugging Face 平臺的模型時,可能會遇到大型模型的執行時間問題。以下是一些原因和解決方案:

  • 模型大小和複雜度:大型模型需要更多的計算資源和時間來載入和初始化。
  • 網路連線和頻寬:下載和處理預訓練權重和引數需要更長的時間,如果網路連線速度慢或頻寬有限。
  • 硬體資源:如果機器的 CPU 或 GPU 能力有限,則會影響模型的執行速度。
  • 生成文字長度:生成更長的文字需要更多的計算資源和時間。

為了改善執行速度,可以嘗試以下方法:

  1. 儲存載入的模型和分詞器:可以將載入的模型和分詞器儲存到磁碟中,然後重新載入以避免每次都下載和初始化。
  2. 實驗不同的硬體組態:可以嘗試使用更強大的 GPU 或分散式計算來提高執行速度。
  3. 調整最大新 token 數量:如果不需要生成太長的文字,可以調整max_new_tokens引數來減少計算資源和時間。

圖表翻譯:

內容解密:

以上程式碼示例展示瞭如何建立 Hugging Face Pipeline、封裝 Pipeline 在 LangChain 中、與模型互動以及處理大型模型的執行時間。這些步驟對於使用 Hugging Face 平臺的語言模型進行文字生成和互動至關重要。

4. 探索小型預訓練模型

如果模型大小不是一個嚴格的要求,您可以探索使用較小的預訓練模型,它們提供了效能和執行時間之間的良好平衡。

注意:與大語言模型合作通常涉及模型大小、效能和執行時間之間的權衡。您需要根據您的具體需求和可用資源找到合適的平衡。

PyTorch

為了完成對 Meta AI 模型的分析,您審視了 PyTorch 作為一個開源的深度學習框架。雖然它本身不是一個模型,但 PyTorch 為構建和訓練各種 AI 模型和神經網路提供了基礎,適用於廣泛的 AI 應用。

回顧問題

讓我們透過以下回顧問題來重新整理我們在本章中獲得的知識。

  1. 下列哪一項是 GPT-4 的主要特徵? A. 影像生成 B. 程式碼完成 C. 文字生成和理解

D. 語音識別 2. OpenAI 的 Codex 的主要用途是什麼? A. 根據文字生成影像 B. 完成和生成程式碼 C. 翻譯語言 D. 處理語音轉文字

  1. 哪個模型以從文字描述中生成高品質影像而聞名? A. GPT-4 B. Codex

C. DALL-E 2 D. PaLM 2 4. Anthropic 的 Claude 3 模型的哪個特徵? A. 多模態輸入能力 B. 非英語語言的流暢度提高 C. 專注於影像生成 D. 集中於實時語音轉錄

  1. Google 的 Codey Suite 的實際應用案例是什麼? A. 影像識別 B. 自然語言翻譯 C. 實時程式碼建議和完成 D. 語音轉文字

  2. 下列哪個模型在將文字轉換為數值向量以進行語義搜尋方面表現出色? A. GPT-4 B. Embed-english C. Codex

D. DALL-E 2

  1. Meta 的 LLaMA 模型主要用於什麼? A. 文字生成和語言理解 B. 語音識別 C. 影像處理 D. 多模態資料分析

  2. 在文字生成模型中,“溫度”引數控制什麼? A. 生成文字的長度

B. 輸出的創造力和隨機性 C. 生成文字的準確性 D. 文字生成的速度

  1. Google 哪個模型以能夠轉錄超過 100 種語言而聞名? A. PaLM 2 B. Codey C. Chirp Speech D. Gemini 1.0 Pro
  2. 下列哪一項不是使用 LangChain 的好處? A. 簡化 AI 應用開發 B. 模組化和可擴充套件的架構 C. 直接與硬體元件整合 D. 提高的靈活性和可擴充套件性

內容解密:

這些問題涵蓋了從 GPT-4、Codex 到 DALL-E 2 等多個 AI 模型的特點和應用。每個問題都旨在考察對這些模型功能和用途的理解。透過回答這些問題,可以評估對於不同 AI 模型及其在實際應用中的作用的掌握程度。

圖表翻譯:

@startuml
skinparam backgroundColor #FEFEFE

title Hugging Face 平臺 LLaMA 模型呼叫

|開發者|
start
:提交程式碼;
:推送到 Git;

|CI 系統|
:觸發建置;
:執行單元測試;
:程式碼品質檢查;

if (測試通過?) then (是)
    :建置容器映像;
    :推送到 Registry;
else (否)
    :通知開發者;
    stop
endif

|CD 系統|
:部署到測試環境;
:執行整合測試;

if (驗證通過?) then (是)
    :部署到生產環境;
    :健康檢查;
    :完成部署;
else (否)
    :回滾變更;
endif

stop

@enduml

這個 Plantuml 圖表展示了不同 AI 模型(如 GPT-4、Codex 和 DALL-E 2)及其主要功能之間的關係。每個模型都有其特定的應用,例如 GPT-4 用於文字生成和語言理解,Codex 用於程式碼完成,DALL-E 2 用於影像生成。這個圖表有助於視覺化地呈現這些模型之間的差異和它們如何應用於不同的任務。

呼叫 Hugging Face 平臺上的 LLaMA 等大語言模型,彰顯了開源社群與商業公司合作推動 AI 技術發展的趨勢。分析段落中提到的存取權杖管理、模型載入流程以及效能調校技巧,都體現了實際應用中需要關注的關鍵環節。技術限制深析顯示,大型模型的執行時間和資源消耗仍然是需要持續最佳化的挑戰。考量模型大小、效能和執行時間的平衡,並探索小型預訓練模型或引數調整,是提升效率的有效策略。前瞻性地來看,隨著硬體和軟體技術的進步,大語言模型的應用門檻將逐步降低,更多創新應用場景將會湧現。玄貓認為,掌握這些核心技術和策略,將有助於開發者更好地利用大語言模型的潛力,創造更大的商業價值。