Giới thiệu Trackio- Một thư viện theo dõi thử nghiệm nhẹ từ Hugging Face
Giới thiệu Trackio- Một thư viện theo dõi thử nghiệm nhẹ từ Hugging Face
- 8 min read
Giới thiệu Trackio: Thư viện theo dõi thử nghiệm gọn nhẹ từ Hugging Face
TL;DR: Trackio là một thư viện Python mã nguồn mở và miễn phí để theo dõi thử nghiệm, cung cấp trang tổng quan cục bộ và tích hợp liền mạch với Hugging Face Spaces để dễ dàng chia sẻ và cộng tác. Vì trackio là một sự thay thế trực tiếp cho wandb, bạn có thể bắt đầu với cú pháp bạn đã biết!
Bối cảnh
Nếu bạn đã đào tạo mô hình học máy của riêng mình, bạn sẽ biết tầm quan trọng của việc có thể theo dõi các số liệu, tham số và siêu tham số trong quá trình đào tạo và trực quan hóa chúng sau đó để hiểu rõ hơn về quá trình chạy đào tạo của bạn.
Hầu hết các nhà nghiên cứu học máy sử dụng các thư viện theo dõi thử nghiệm cụ thể để thực hiện việc này. Tuy nhiên, các thư viện này có thể phải trả phí, yêu cầu thiết lập phức tạp hoặc thiếu tính linh hoạt cần thiết để thử nghiệm và chia sẻ nhanh chóng.
Tại sao chúng tôi chuyển sang Trackio
Tại Hugging Face, nhóm khoa học của chúng tôi đã bắt đầu sử dụng Trackio cho các dự án nghiên cứu của chúng tôi và chúng tôi đã tìm thấy một số ưu điểm chính so với các giải pháp theo dõi khác:
Dễ dàng chia sẻ và nhúng: Trackio giúp việc chia sẻ tiến trình đào tạo với đồng nghiệp hoặc nhúng trực tiếp các biểu đồ vào bài đăng trên blog và tài liệu bằng iframe trở nên cực kỳ đơn giản. Điều này đặc biệt có giá trị khi bạn muốn giới thiệu các đường cong hoặc số liệu đào tạo cụ thể mà không yêu cầu người khác thiết lập tài khoản hoặc điều hướng các trang tổng quan phức tạp.
Tiêu chuẩn hóa và minh bạch: Các số liệu như mức sử dụng năng lượng GPU rất quan trọng để theo dõi và chia sẻ với cộng đồng để chúng ta có thể có ý tưởng tốt hơn về nhu cầu năng lượng và tác động môi trường của quá trình đào tạo mô hình. Sử dụng Trackio, lấy trực tiếp thông tin từ lệnh nvidia-smi, giúp dễ dàng định lượng và so sánh mức sử dụng năng lượng và thêm nó vào thẻ mô hình.
Khả năng truy cập dữ liệu: Không giống như một số công cụ theo dõi khóa dữ liệu của bạn sau các API độc quyền, Trackio giúp trích xuất và phân tích dữ liệu đang được ghi lại trở nên đơn giản. Điều này rất quan trọng đối với các nhà nghiên cứu cần thực hiện phân tích tùy chỉnh hoặc tích hợp các số liệu đào tạo vào quy trình làm việc nghiên cứu của họ.
Tính linh hoạt để thử nghiệm: Thiết kế gọn nhẹ của Trackio cho phép chúng tôi dễ dàng thử nghiệm các tính năng theo dõi mới trong quá trình chạy đào tạo. Ví dụ: chúng tôi có thể quyết định thời điểm di chuyển các tensor từ GPU sang CPU khi ghi nhật ký các tensor trong khi đào tạo, điều này cải thiện đáng kể thông lượng đào tạo khi bạn cần theo dõi trạng thái mô hình/trung gian mà không ảnh hưởng đến hiệu suất.
Sử dụng Trackio
Vậy Trackio là gì và bạn sử dụng nó như thế nào? Trackio là một thư viện Python mã nguồn mở cho phép bạn theo dõi bất kỳ số liệu nào và trực quan hóa chúng bằng trang tổng quan Gradio cục bộ. Bạn cũng có thể đồng bộ hóa trang tổng quan này với Hugging Face Spaces, nghĩa là bạn có thể chia sẻ trang tổng quan với những người dùng khác chỉ bằng cách chia sẻ URL. Vì Spaces có thể là riêng tư hoặc công khai, điều này có nghĩa là bạn có thể chia sẻ trang tổng quan công khai hoặc chỉ trong các thành viên của tổ chức Hugging Face của bạn.
Cài đặt
Bạn có thể cài đặt trackio bằng pip:
pip install trackio
Hoặc, nếu bạn thích sử dụng uv:
uv pip install trackio
Cách dùng
trackio được thiết kế để trở thành một sự thay thế trực tiếp cho các thư viện theo dõi thử nghiệm như wandb. API tương thích với wandb.init, wandb.log và wandb.finish, vì vậy bạn chỉ cần nhập trackio dưới dạng wandb trong mã của mình.
- import wandb
+ import trackio as wandb
Đây là một ví dụ:
import trackio
import random
import time
runs = 3
epochs = 8
def simulate_multiple_runs():
for run in range(runs):
trackio.init(project="fake-training", config={
"epochs": epochs,
"learning_rate": 0.001,
"batch_size": 64
})
for epoch in range(epochs):
train_loss = random.uniform(0.2, 1.0)
train_acc = random.uniform(0.6, 0.95)
val_loss = train_loss - random.uniform(0.01, 0.1)
val_acc = train_acc + random.uniform(0.01, 0.05)
trackio.log({
"epoch": epoch,
"train_loss": train_loss,
"train_accuracy": train_acc,
"val_loss": val_loss,
"val_accuracy": val_acc
})
time.sleep(0.2)
trackio.finish()
simulate_multiple_runs()
Trực quan hóa kết quả
Sau khi ghi nhật ký các thử nghiệm của mình, bạn có thể khởi chạy trang tổng quan để trực quan hóa kết quả của mình. Chạy lệnh sau trong terminal của bạn:
trackio show
Hoặc, khởi chạy nó từ Python:
import trackio
trackio.show()
Bạn cũng có thể chỉ định tên dự án:
trackio show --project "my project"
Hoặc trong Python:
trackio.show(project="my project")
Chia sẻ với 🤗 Spaces
Để đồng bộ hóa trang tổng quan cục bộ của bạn với Hugging Face Spaces, chỉ cần chuyển space_id đến init:
trackio.init(project="fake-training", space_id="org_name/space_name")
Nếu bạn đang lưu trữ trang tổng quan của mình trên Spaces, bạn chỉ cần chia sẻ URL hoặc nhúng nó ở bất kỳ đâu bằng iframe:
<iframe src="https://org_name-space_name.hf.space/?project=fake-training&metrics=train_loss,train_accuracy&sidebar=hidden" width=600 height=600 frameBorder="0"></iframe>
Vì Spaces có thể là riêng tư hoặc công khai, điều này có nghĩa là bạn có thể chia sẻ trang tổng quan công khai hoặc chỉ trong các thành viên của tổ chức Hugging Face của bạn — tất cả đều miễn phí!
Khi bạn đồng bộ hóa trang tổng quan Trackio của mình với Hugging Face Spaces, dữ liệu sẽ được ghi vào cơ sở dữ liệu Sqlite tạm thời trên Spaces. Vì cơ sở dữ liệu này được đặt lại nếu Space của bạn khởi động lại, Trackio cũng chuyển đổi cơ sở dữ liệu Sqlite thành tập dữ liệu Parquet và sao lưu nó vào Tập dữ liệu Hugging Face cứ sau 5 phút. Điều này có nghĩa là bạn có thể trực quan hóa các số liệu đã ghi trong tập dữ liệu Hugging Face bất kỳ lúc nào một cách dễ dàng:
Mẹo: bạn có thể đặt tên cho tập dữ liệu này bằng cách truyền dataset_id vào trackio.init().
Tích hợp với 🤗 Transformers và 🤗 Accelerate
Trackio tích hợp tự nhiên với các thư viện Hugging Face như transformers và accelerate, vì vậy bạn có thể ghi nhật ký các số liệu với thiết lập tối thiểu.
Với transformers.Trainer:
import numpy as np
from datasets import Dataset
from transformers import Trainer, AutoModelForCausalLM, TrainingArguments
# Create a fake dataset
data = np.random.randint(0, 1000, (8192, 64)).tolist()
dataset = Dataset.from_dict({"input_ids": data, "labels": data})
# Train a model using the Trainer API
trainer = Trainer(
model=AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B"),
args=TrainingArguments(run_name="fake-training", report_to="trackio"),
train_dataset=dataset,
)
trainer.train()
Với accelerate:
from accelerate import Accelerator
accelerator = Accelerator(log_with="trackio")
accelerator.init_trackers("fake-training")
... # Prepare the model, dataloader, etc.
for step, batch in enumerate(dataloader):
... # Your training logic here
accelerator.log({"training_loss": loss}, step=step)
accelerator.end_training()
Không cần thiết lập thêm — chỉ cần cắm nó vào và bắt đầu theo dõi.
Nguyên tắc thiết kế
- API tương thích với các thư viện theo dõi thử nghiệm phổ biến, giúp việc di chuyển đến và đi từ Trackio trở nên liền mạch.
- Ưu tiên cục bộ: nhật ký và trang tổng quan chạy và tồn tại cục bộ theo mặc định, với tùy chọn lưu trữ trên Hugging Face Spaces.
- Gọn nhẹ và có thể mở rộng: codebase cốt lõi dưới 1.000 dòng Python, giúp dễ hiểu và sửa đổi.
- Miễn phí và mã nguồn mở: tất cả các tính năng, bao gồm cả lưu trữ trên Hugging Face, đều miễn phí.
- Được xây dựng trên 🤗 Datasets và Spaces để xử lý và trực quan hóa dữ liệu mạnh mẽ.
Các bước tiếp theo
Trackio cố tình gọn nhẹ và hiện đang ở giai đoạn beta. Một số tính năng được tìm thấy trong các công cụ theo dõi khác, chẳng hạn như quản lý tạo tác hoặc trực quan hóa phức tạp, chưa có sẵn. Nếu bạn muốn có các tính năng này, vui lòng tạo sự cố tại đây: https://github.com/gradio-app/trackio/issues
Với bản chất mã nguồn mở và gọn nhẹ của Trackio, chúng tôi rất muốn hợp tác với cộng đồng học máy để thiết kế một sản phẩm theo dõi thử nghiệm phù hợp với tất cả chúng ta!
Link bài viết gốc
- Tags:
- Ai
- July 29, 2025
- Huggingface.co