在資料科學的領域中,資料的載入與處理是至關重要的第一步。本文將以 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 模型。
- 將 Hugging Face 模型上傳至 Amazon S3。
- 使用 SageMaker 建立一個 Hugging Face 模型的端點。
- 使用 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_tokens
、temperature
等引數, fine-tune 模型以獲得更理想的生成結果。
我認為 Hugging Face Hub 和 Transformers 函式庫的結合,大幅降低了使用大語言模型的門檻,讓更多開發者能參與到這個 exciting 的領域。