Tinh chỉnh siêu tham số hiệu quả với Ray Tune và YOLO26
Điều chỉnh siêu tham số là rất quan trọng để đạt được hiệu suất mô hình cao nhất bằng cách khám phá tập hợp siêu tham số tối ưu. Điều này bao gồm việc chạy thử với các siêu tham số khác nhau và đánh giá hiệu suất của mỗi lần thử.
Tăng tốc Tinh chỉnh với Ultralytics YOLO26 và Ray Tune
Ultralytics YOLO26 tích hợp Ray Tune để tinh chỉnh siêu tham số, giúp tối ưu hóa các siêu tham số của mô hình YOLO26 một cách hiệu quả. Với Ray Tune, bạn có thể sử dụng các chiến lược tìm kiếm nâng cao, khả năng song song hóa và dừng sớm để đẩy nhanh quá trình tinh chỉnh.
Ray Tune

Ray Tune là một thư viện tinh chỉnh siêu tham số được thiết kế để đạt hiệu quả và linh hoạt. Nó hỗ trợ nhiều chiến lược tìm kiếm, khả năng song song hóa và chiến lược dừng sớm, đồng thời tích hợp liền mạch với các framework học máy phổ biến, bao gồm Ultralytics YOLO26.
Tích hợp với Weights & Biases
YOLO26 cũng cho phép tích hợp tùy chọn với Weights & Biases để giám sát quá trình tinh chỉnh.
Cài đặt
Để cài đặt các gói cần thiết, hãy chạy:
Cài đặt
# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"
# Optionally install W&B for logging
pip install wandb
Cách sử dụng
Cách sử dụng
from ultralytics import YOLO
# Load a YOLO26n model
model = YOLO("yolo26n.pt")
# Start tuning hyperparameters for YOLO26n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)
tune() Tham số phương thức
Hàm tune() phương thức trong YOLO26 cung cấp giao diện dễ sử dụng để tinh chỉnh siêu tham số với Ray Tune. Nó chấp nhận một số đối số cho phép bạn tùy chỉnh quá trình tinh chỉnh. Dưới đây là giải thích chi tiết về từng tham số:
| Tham số | Loại | Mô tả | Giá trị mặc định |
|---|---|---|---|
data | str | Tệp cấu hình bộ dữ liệu (ở định dạng YAML) để chạy bộ chỉnh trên đó. Tệp này sẽ chỉ định đường dẫn dữ liệu xác thực và đào tạo, cũng như các cài đặt dành riêng cho bộ dữ liệu khác. | |
space | dict, optional | Một từ điển định nghĩa không gian tìm kiếm siêu tham số cho Ray Tune. Mỗi khóa tương ứng với tên một siêu tham số, và giá trị chỉ định phạm vi các giá trị để khám phá trong quá trình tinh chỉnh. Nếu không được cung cấp, YOLO26 sẽ sử dụng không gian tìm kiếm mặc định với nhiều siêu tham số khác nhau. | |
grace_period | int, optional | Thời gian gia hạn tính bằng epochs cho bộ lập lịch ASHA trong Ray Tune. Bộ lập lịch sẽ không kết thúc bất kỳ thử nghiệm nào trước số lượng kỷ nguyên này, cho phép mô hình có một số đào tạo tối thiểu trước khi đưa ra quyết định về việc dừng sớm. | 10 |
gpu_per_trial | int, optional | Số lượng GPU được phân bổ cho mỗi lần thử nghiệm trong quá trình điều chỉnh. Điều này giúp quản lý việc sử dụng GPU, đặc biệt là trong môi trường nhiều GPU. Nếu không được cung cấp, bộ chỉnh sẽ sử dụng tất cả các GPU có sẵn. | None |
iterations | int, optional | Số lượng thử nghiệm tối đa sẽ chạy trong quá trình điều chỉnh. Tham số này giúp kiểm soát tổng số tổ hợp siêu tham số được kiểm tra, đảm bảo quá trình điều chỉnh không chạy vô thời hạn. | 10 |
**train_args | dict, optional | Các đối số bổ sung để chuyển cho train() phương thức trong quá trình điều chỉnh. Các đối số này có thể bao gồm các cài đặt như số lượng epochs huấn luyện, kích thước lô, và các cấu hình dành riêng cho quá trình huấn luyện khác. | {} |
Bằng cách tùy chỉnh các tham số này, bạn có thể tinh chỉnh quá trình tối ưu hóa siêu tham số để phù hợp với nhu cầu cụ thể và tài nguyên tính toán hiện có của mình.
Mô tả Không gian Tìm kiếm Mặc định
Bảng sau liệt kê các tham số không gian tìm kiếm mặc định để tinh chỉnh siêu tham số trong YOLO26 với Ray Tune. Mỗi tham số có một phạm vi giá trị cụ thể được định nghĩa bởi tune.uniform().
| Tham số | Phạm vi | Mô tả |
|---|---|---|
lr0 | tune.uniform(1e-5, 1e-1) | Tỷ lệ học ban đầu kiểm soát kích thước bước trong quá trình tối ưu hóa. Giá trị cao hơn làm tăng tốc độ đào tạo nhưng có thể gây ra sự không ổn định. |
lrf | tune.uniform(0.01, 1.0) | Hệ số learning rate cuối cùng, xác định mức độ giảm learning rate vào cuối quá trình huấn luyện. |
momentum | tune.uniform(0.6, 0.98) | Hệ số quán tính cho trình tối ưu hóa giúp tăng tốc quá trình huấn luyện và khắc phục các cực tiểu cục bộ. |
weight_decay | tune.uniform(0.0, 0.001) | Tham số điều chuẩn giúp ngăn ngừa tình trạng overfitting bằng cách phạt các giá trị trọng số lớn. |
warmup_epochs | tune.uniform(0.0, 5.0) | Số lượng epochs với tốc độ học tăng dần để ổn định quá trình huấn luyện ban đầu. |
warmup_momentum | tune.uniform(0.0, 0.95) | Giá trị động lượng ban đầu tăng dần trong giai đoạn khởi động. |
box | tune.uniform(0.02, 0.2) | Trọng số cho thành phần loss bounding box, cân bằng độ chính xác định vị trong mô hình. |
cls | tune.uniform(0.2, 4.0) | Trọng số cho thành phần loss phân loại, cân bằng độ chính xác dự đoán lớp trong mô hình. |
hsv_h | tune.uniform(0.0, 0.1) | Phạm vi tăng cường Hue giới thiệu sự thay đổi màu sắc để giúp mô hình khái quát hóa. |
hsv_s | tune.uniform(0.0, 0.9) | Phạm vi tăng cường độ bão hòa thay đổi cường độ màu sắc để cải thiện độ bền. |
hsv_v | tune.uniform(0.0, 0.9) | Phạm vi tăng cường giá trị (brightness) giúp mô hình hoạt động trong các điều kiện ánh sáng khác nhau. |
degrees | tune.uniform(0.0, 45.0) | Phạm vi tăng cường xoay theo độ, cải thiện khả năng nhận dạng các đối tượng bị xoay. |
translate | tune.uniform(0.0, 0.9) | Phạm vi của phép tăng cường dữ liệu tỷ lệnh dịch chuyển ảnh theo chiều ngang và chiều dọc. |
scale | tune.uniform(0.0, 0.9) | Phạm vi tăng cường tỷ lệ mô phỏng các đối tượng ở các khoảng cách khác nhau. |
shear | tune.uniform(0.0, 10.0) | Phạm vi tăng cường Shear theo độ, mô phỏng các thay đổi phối cảnh. |
perspective | tune.uniform(0.0, 0.001) | Phạm vi tăng cường phối cảnh mô phỏng các thay đổi về điểm nhìn 3D. |
flipud | tune.uniform(0.0, 1.0) | Độ xác suất tăng cường lật dọc, tăng tính đa dạng của tập dữ liệu. |
fliplr | tune.uniform(0.0, 1.0) | Xác suất tăng cường lật ngang, hữu ích cho các đối tượng đối xứng. |
mosaic | tune.uniform(0.0, 1.0) | Xác suất tăng cường Mosaic kết hợp bốn hình ảnh thành một mẫu huấn luyện. |
mixup | tune.uniform(0.0, 1.0) | Xác suất tăng cường Mixup trộn hai ảnh và nhãn của chúng lại với nhau. |
cutmix | tune.uniform(0.0, 1.0) | Xác suất tăng cường Cutmix kết hợp các vùng hình ảnh trong khi vẫn duy trì các đặc điểm cục bộ, cải thiện khả năng phát hiện các đối tượng bị che khuất một phần. |
copy_paste | tune.uniform(0.0, 1.0) | Xác suất tăng cường Sao chép-Dán giúp chuyển các đối tượng giữa các hình ảnh để tăng tính đa dạng của đối tượng. |
Ví dụ về Không gian Tìm kiếm Tùy chỉnh
Trong ví dụ này, chúng tôi trình bày cách sử dụng không gian tìm kiếm tùy chỉnh để tinh chỉnh siêu tham số với Ray Tune và YOLO26. Bằng cách cung cấp một không gian tìm kiếm tùy chỉnh, bạn có thể tập trung quá trình tinh chỉnh vào các siêu tham số cụ thể mà bạn quan tâm.
Cách sử dụng
from ray import tune
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.pt")
# Run Ray Tune on the model
result_grid = model.tune(
data="coco8.yaml",
space={"lr0": tune.uniform(1e-5, 1e-1)},
epochs=50,
use_ray=True,
)
Trong đoạn mã trên, chúng tôi tạo một mô hình YOLO với các trọng số được huấn luyện trước "yolo26n.pt". Sau đó, chúng tôi gọi tune() phương thức, chỉ định cấu hình tập dữ liệu với "coco8.yaml". Chúng tôi cung cấp một không gian tìm kiếm tùy chỉnh cho tốc độ học ban đầu lr0 bằng cách sử dụng một từ điển với khóa "lr0" và giá trị tune.uniform(1e-5, 1e-1). Cuối cùng, chúng ta chuyển các đối số huấn luyện bổ sung, chẳng hạn như số lượng epochs trực tiếp đến phương thức tune như epochs=50.
Tiếp tục phiên điều chỉnh siêu tham số bị gián đoạn với Ray Tune
Bạn có thể tiếp tục phiên Ray Tune bị gián đoạn bằng cách truyền resume=True. Bạn có thể tùy chọn chuyển thư mục name được Ray Tune sử dụng trong runs/{task} để tiếp tục. Nếu không, nó sẽ tiếp tục phiên bị gián đoạn cuối cùng. Bạn không cần cung cấp iterations và space một lần nữa, nhưng bạn cần cung cấp lại các đối số huấn luyện còn lại bao gồm data và epochs.
Sử dụng resume=True với model.tune()
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.pt")
# Resume previous run
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, resume=True)
# Resume Ray Tune run with name 'tune_exp_2'
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, name="tune_exp_2", resume=True)
Xử lý Kết quả Ray Tune
Sau khi chạy thử nghiệm điều chỉnh siêu tham số với Ray Tune, bạn có thể muốn thực hiện nhiều phân tích khác nhau trên các kết quả thu được. Hướng dẫn này sẽ hướng dẫn bạn các quy trình làm việc phổ biến để xử lý và phân tích các kết quả này.
Tải Kết quả Thử nghiệm Tune từ một Thư mục
Sau khi chạy thử nghiệm điều chỉnh với tuner.fit(), bạn có thể tải kết quả từ một thư mục. Điều này đặc biệt hữu ích nếu bạn thực hiện phân tích sau khi tập lệnh huấn luyện ban đầu đã thoát.
experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")
restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()
Phân tích Cấp độ Thử nghiệm Cơ bản
Xem tổng quan về hiệu suất của các thử nghiệm. Bạn có thể nhanh chóng kiểm tra xem có bất kỳ lỗi nào xảy ra trong quá trình thử nghiệm hay không.
if result_grid.errors:
print("One or more trials failed!")
else:
print("No errors!")
Phân tích Cấp độ Chạy Thử Cơ bản
Truy cập cấu hình siêu tham số của từng thử nghiệm và các số liệu được báo cáo cuối cùng.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
Vẽ Đồ thị Toàn bộ Lịch sử của các Số liệu Báo cáo cho một Lần Chạy Thử
Bạn có thể vẽ biểu đồ lịch sử của các số liệu đã báo cáo cho mỗi thử nghiệm để xem các số liệu đã phát triển như thế nào theo thời gian.
import matplotlib.pyplot as plt
for i, result in enumerate(result_grid):
plt.plot(
result.metrics_dataframe["training_iteration"],
result.metrics_dataframe["mean_accuracy"],
label=f"Trial {i}",
)
plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()
Tóm tắt
Trong hướng dẫn này, chúng tôi đã đề cập đến các quy trình làm việc phổ biến để phân tích kết quả các thử nghiệm được chạy với Ray Tune bằng Ultralytics. Các bước chính bao gồm tải kết quả thử nghiệm từ một thư mục, thực hiện phân tích cơ bản ở cấp độ thử nghiệm và cấp độ chạy thử, và vẽ biểu đồ các chỉ số.
Tìm hiểu thêm bằng cách xem trang tài liệu Phân tích Kết quả của Ray Tune để khai thác tối đa các thử nghiệm điều chỉnh siêu tham số của bạn.
Câu hỏi thường gặp
Làm cách nào để tinh chỉnh các siêu tham số của mô hình YOLO26 của tôi bằng Ray Tune?
Để tinh chỉnh các siêu tham số của mô hình Ultralytics YOLO26 của bạn bằng Ray Tune, hãy làm theo các bước sau:
Cài đặt các gói cần thiết:
pip install -U ultralytics "ray[tune]" pip install wandb # optional for loggingTải mô hình YOLO26 của bạn và bắt đầu tinh chỉnh:
from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Start tuning with the COCO8 dataset result_grid = model.tune(data="coco8.yaml", use_ray=True)
Điều này sử dụng các chiến lược tìm kiếm nâng cao và tính song song của Ray Tune để tối ưu hóa hiệu quả các siêu tham số của mô hình. Để biết thêm thông tin, hãy xem tài liệu Ray Tune.
Các siêu tham số mặc định để tinh chỉnh YOLO26 bằng Ray Tune là gì?
Ultralytics YOLO26 sử dụng các siêu tham số mặc định sau đây để tinh chỉnh với Ray Tune:
| Tham số | Phạm vi giá trị | Mô tả |
|---|---|---|
lr0 | tune.uniform(1e-5, 1e-1) | Tốc độ học ban đầu |
lrf | tune.uniform(0.01, 1.0) | Hệ số tỷ lệ học tập cuối cùng |
momentum | tune.uniform(0.6, 0.98) | Động lượng |
weight_decay | tune.uniform(0.0, 0.001) | Suy giảm trọng lượng |
warmup_epochs | tune.uniform(0.0, 5.0) | Số lượng epochs Warmup |
box | tune.uniform(0.02, 0.2) | Trọng số loss Box |
cls | tune.uniform(0.2, 4.0) | Trọng số loss Class |
hsv_h | tune.uniform(0.0, 0.1) | Phạm vi tăng cường Hue |
translate | tune.uniform(0.0, 0.9) | Phạm vi tăng cường Translation |
Bạn có thể tùy chỉnh các siêu tham số này cho phù hợp với nhu cầu cụ thể của mình. Để có danh sách đầy đủ và biết thêm chi tiết, hãy tham khảo hướng dẫn Điều chỉnh Siêu tham số.
Làm cách nào để tích hợp Weights & Biases với quá trình tinh chỉnh mô hình YOLO26 của tôi?
Để tích hợp Weights & Biases (W&B) với quá trình tinh chỉnh Ultralytics YOLO26 của bạn:
Cài đặt W&B:
pip install wandbSửa đổi script điều chỉnh của bạn:
import wandb from ultralytics import YOLO wandb.init(project="YOLO-Tuning", entity="your-entity") # Load YOLO model model = YOLO("yolo26n.pt") # Tune hyperparameters result_grid = model.tune(data="coco8.yaml", use_ray=True)
Thiết lập này sẽ cho phép bạn giám sát quá trình tinh chỉnh, theo dõi cấu hình siêu tham số và trực quan hóa kết quả trong W&B.
Tại sao tôi nên sử dụng Ray Tune để tối ưu hóa siêu tham số với YOLO26?
Ray Tune cung cấp nhiều lợi thế cho việc tối ưu hóa siêu tham số:
- Chiến lược Tìm kiếm Nâng cao: Sử dụng các thuật toán như Tối ưu hóa Bayesian và HyperOpt để tìm kiếm tham số hiệu quả.
- Tính Song Song: Hỗ trợ thực thi song song nhiều thử nghiệm, giúp tăng tốc đáng kể quá trình điều chỉnh.
- Dừng Sớm: Sử dụng các chiến lược như ASHA để dừng sớm các thử nghiệm hoạt động kém hiệu quả, giúp tiết kiệm tài nguyên tính toán.
Ray Tune tích hợp liền mạch với Ultralytics YOLO26, cung cấp giao diện dễ sử dụng để tinh chỉnh siêu tham số một cách hiệu quả. Để bắt đầu, hãy xem hướng dẫn Tinh chỉnh siêu tham số.
Làm cách nào để định nghĩa không gian tìm kiếm tùy chỉnh cho việc tinh chỉnh siêu tham số YOLO26?
Để định nghĩa không gian tìm kiếm tùy chỉnh cho việc tinh chỉnh siêu tham số YOLO26 của bạn với Ray Tune:
from ray import tune
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)
Điều này tùy chỉnh phạm vi của các siêu tham số như tốc độ học ban đầu và động lượng để khám phá trong quá trình điều chỉnh. Để có các cấu hình nâng cao, hãy tham khảo phần Ví Dụ về Không Gian Tìm Kiếm Tùy Chỉnh.