在資料科學的領域中,資料的載入與處理是至關重要的第一步。本文將以 Hugging Face 生態系為核心,帶您深入瞭解如何使用 datasets 函式庫載入不同格式的資料,並示範如何有效地分割資料集以進行訓練、測試和驗證。此外,我們也將探討如何使用 Inference API 呼叫開源大語言模型,讓您能更有效率地運用這些強大的工具。

從 Hugging Face Hub 取得資料

Hugging Face Hub 是一個豐富的資料集資源函式庫,我們可以使用 datasets 函式庫輕鬆地從中載入資料。以下範例示範如何載入 rotten_tomatoes 資料集:

from datasets import load_dataset

dataset = load_dataset("rotten_tomatoes", cache_dir="./data")
print(dataset)

train_data = dataset["train"]
print(train_data[0])

validation_data = dataset["validation"]
print(validation_data[4])

這段程式碼首先載入 rotten_tomatoes 資料集,並將其儲存至 ./data 快取目錄,以提升後續載入速度。接著,我們分別取得訓練集和驗證集的資料,並列印出其中一個範例,讓您可以快速瞭解資料結構。

處理本地檔案:文字、CSV 與 JSON

除了 Hugging Face Hub,datasets 也支援從本地檔案載入資料,包含常見的文字、CSV 和 JSON 格式。

文字檔案

from datasets import load_dataset

dataset = load_dataset("text", data_files="./data/rotten_tomatoes.txt", cache_dir="./data_cache")
print(dataset["train"][0])

此程式碼片段示範如何從本地文字檔案 rotten_tomatoes.txt 載入資料。data_files 引數指設定檔案路徑,cache_dir 引數則設定快取目錄。

CSV 檔案

from datasets import load_dataset

dataset = load_dataset("csv", data_files="./data/rotten_tomatoes.csv", cache_dir="./data_cache")
print(dataset["train"][0])

這段程式碼示範如何從本地 CSV 檔案 rotten_tomatoes.csv 載入資料。使用方法與載入文字檔案類別似,只需將第一個引數改為 "csv"

JSON 檔案

from datasets import load_dataset

dataset = load_dataset("json", data_files="./data/rotten_tomatoes.json", cache_dir="./data_cache")
print(dataset["train"][0])

這段程式碼示範如何從本地 JSON 檔案 rotten_tomatoes.json 載入資料。同樣地,只需將第一個引數改為 "json" 即可。

運用開源大語言模型:Inference API

Hugging Face 提供了 Inference API,讓您可以輕鬆使用開源大語言模型。以下範例示範如何使用 GPT-2 模型生成文字:

import requests
import os

API_TOKEN = os.environ.get("HF_API_TOKEN")  # 從環境變數取得 API token
API_URL = "https://api-inference.huggingface.co/models/gpt2"
headers = {"Authorization": f"Bearer {API_TOKEN}"}

def query(payload):
    response = requests.post(API_URL, headers=headers, json=payload)
    return response.json()

question = "What are the benefits of using Hugging Face Datasets?"
response = query({"inputs": question})
print(response)

這段程式碼示範瞭如何使用 Inference API 呼叫 GPT-2 模型。首先,從環境變數中取得 API token,並設定 API URL 和 headers。query 函式用於傳送請求並取得回應。最後,我們向 GPT-2 提問,並列印模型生成的回應。

  graph LR
    B[B]
    CSV[CSV]
    JSON[JSON]
    No[No]
    Yes[Yes]
    A[選擇資料來源] --> B{本地檔案?};
    B -- Yes --> C[選擇檔案格式];
    C -- 文字 --> D[load_dataset_text];
    C -- CSV --> E[load_dataset_csv];
    C -- JSON --> F[load_dataset_json];
    B -- No --> G[load_dataset_dataset_name];
    D --> H[處理資料];
    E --> H;
    F --> H;
    G --> H;

透過本文的介紹,我們瞭解瞭如何使用 Hugging Face 的 datasets 函式庫載入不同格式的資料,以及如何使用 Inference API 呼叫開源大語言模型。這些技巧將有助於您更有效率地進行資料科學專案,並開啟 AI 應用開發的無限可能。

希望這些資訊對您有所幫助,也歡迎您持續關注 Hugging Face 生態系的發展,探索更多令人興奮的 AI 工具和技術。

```python
from datasets import load_dataset, load_dataset_builder, get_dataset_split_names

# 載入 CSV 檔案
data = load_dataset("csv", data_files="my_data.csv")

# 載入 JSON 檔案
data = load_dataset("json", data_files="my_data.json")

# 載入文字檔案
data = load_dataset("text", data_files="my_data.txt")

# 從 Hugging Face Hub 載入資料集
data = load_dataset("dataset_name")

# 檢視可用的分割
splits = get_dataset_split_names("dataset_name")

# 載入特定分割
data = load_dataset("dataset_name", split="train")

以上程式碼示範瞭如何使用 datasets 函式庫載入不同格式的資料,包含 CSV、JSON、文字檔案以及 Hugging Face Hub 上的公開資料集。同時也展示瞭如何檢視和載入特定資料分割。

  graph LR
    B[B]
A[資料來源] --> B{datasets}
B --> C[資料集]

此流程圖簡潔地展示了 datasets 函式庫如何從不同資料來源載入資料,並最終生成可用的資料集。

Transformers:預訓練模型的寶函式庫

Transformers 函式庫提供了大量預訓練模型,涵蓋各種 NLP 任務。以下將示範如何使用 pipeline 快速執行情感分析任務。

from transformers import pipeline

classifier = pipeline("sentiment-analysis")
result = classifier("這篇文章寫得真好!")
print(result)

這段程式碼使用了 pipeline 建立一個情感分析器,並用它分析一句話的情感。pipeline 自動處理了模型載入、文字預處理和推理等步驟,讓使用者只需專注於任務本身。

整合 SageMaker 和 TGI:高效佈署與應用

Hugging Face 生態系與 Amazon SageMaker 和 Text Generation Inference 等服務整合,讓模型佈署和應用變得更加高效。以下將簡述如何在 SageMaker 上佈署 Hugging Face 模型。

  1. 將 Hugging Face 模型上傳至 Amazon S3。
  2. 使用 SageMaker 建立一個 Hugging Face 模型的端點。
  3. 使用 SageMaker SDK 或 API 呼叫端點進行推理。

Hugging Face 生態系提供了一套完整的工具和資源,簡化了機器學習模型的開發、訓練和佈署流程。透過整合 Datasets、Transformers 和 Pipelines 等核心元件,並結合 Amazon SageMaker 和 Text Generation Inference 等服務,開發者可以更高效地構建和應用 AI 解決方案。

後續展望

未來,Hugging Face 生態系將持續發展,提供更多功能強大的工具和資源,例如更進階的模型訓練和佈署策略、更豐富的資料集和更便捷的模型評估方法。同時,與其他雲端服務的整合也將更加緊密,為開發者提供更全面的 AI 開發體驗。

解密大語言模型:Hugging Face Hub 與 Transformers 的實戰應用

身為技術研究者玄貓,我熱衷於探索前沿技術,尤其是自然語言處理領域。今天,我將分享如何利用 Hugging Face Hub 和 Transformers 函式庫進行文字生成,並深入剖析其背後原理與實戰技巧。

快速上手:透過 Hugging Face Hub 進行推論

Hugging Face Hub 提供了 InferenceClient 這個強大的工具,讓開發者可以直接使用託管在 Hub 上的預訓練模型,無需繁瑣的設定。以下程式碼示範如何使用 InferenceClient 生成文字:

from huggingface_hub import InferenceClient

# 設定 Hugging Face Hub API token,請替換成你的 API token
API_TOKEN = "YOUR_HUGGING_FACE_API_TOKEN"  

# 設定想詢問模型的問題
question1 = "如何用淺顯易懂的比喻解釋大語言模型?"
question2 = "板球的比賽規則是什麼?"

# 建立 InferenceClient
client = InferenceClient(token=API_TOKEN)

# 使用 databricks/dolly-v2-3b 模型生成文字,並限制輸出長度
response1 = client.text_generation(model="databricks/dolly-v2-3b", prompt=question1, max_new_tokens=100)
print(response1)

response2 = client.text_generation(model="databricks/dolly-v2-3b", prompt=question2, max_new_tokens=100)
print(response2)

這段程式碼首先匯入 InferenceClient 並初始化,接著利用 text_generation 方法呼叫 databricks/dolly-v2-3b 模型。prompt 引數傳入我們想要模型回答的問題,max_new_tokens 引數則限制了生成文字的長度,避免過於冗長的輸出。我發現,適當的 max_new_tokens 設定,有助於控制生成文字的品質和效率。

透過 Hugging Face Hub,我們可以輕鬆使用各種預訓練模型,快速進行文字生成任務。這對於快速原型開發和實驗非常有幫助。

  graph LR
    C[C]
    A[設定 API Token] --> B(建立 InferenceClient);
    B --> C{設定問題};
    C --> D[呼叫 text_generation];
    D --> E[輸出生成文字];

上圖展示了使用 InferenceClient 進行文字生成的流程。首先設定 API Token,接著建立 InferenceClient,設定問題後,呼叫 text_generation 方法,最後輸出模型生成的文字。

在實際應用中,我們可以根據需求調整 max_new_tokenstemperature 等引數, fine-tune 模型以獲得更理想的生成結果。

我認為 Hugging Face Hub 和 Transformers 函式庫的結合,大幅降低了使用大語言模型的門檻,讓更多開發者能參與到這個 exciting 的領域。