Điều chỉnh siêu tham số hiệu quả với Ray Tune và YOLO11
Đ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á bộ siêu tham số tối ưu. Điều này bao gồm chạy thử nghiệm với các siêu tham số khác nhau và đánh giá hiệu suất của từng thử nghiệm.
Tăng tốc điều chỉnh với Ultralytics YOLO11 và Ray Tune
Ultralytics YOLO11 kết hợp Ray Tune để điều chỉnh siêu tham số, hợp lý hóa quá trình tối ưu hóa YOLO11 siêu tham số mô hình. Với Ray Tune, bạn có thể sử dụng các chiến lược tìm kiếm nâng cao, tính song song và dừng sớm để đẩy nhanh quá trình điều chỉnh.
Ray Điều Chỉnh
Ray Tune là một thư viện điều chỉnh siêu tham số được thiết kế để đạt hiệu quả và tính linh hoạt. Nó hỗ trợ nhiều chiến lược tìm kiếm, song song và chiến lược dừng sớm, và tích hợp liền mạch với các khuôn khổ học máy phổ biến, bao gồm Ultralytics YOLO11 .
Tích hợp với Weights & Biases
YOLO11 cũng cho phép tích hợp tùy chọn với Weights & Biases để theo dõi quá trình điều chỉnh.
Cài đặt
Để cài đặt các gói cần thiết, hãy chạy:
Cài đặt
Cách sử dụng
Cách sử dụng
tune()
Tham số phương pháp
Các tune()
phương pháp trong YOLO11 cung cấp giao diện dễ sử dụng để điều 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 quy trình điều chỉnh. Dưới đây là giải thích chi tiết về từng tham số:
Tham số | Kiểu | Sự miêu tả | Giá trị mặc định |
---|---|---|---|
data |
str |
Tệp cấu hình tập dữ liệu (ở định dạng YAML) để chạy bộ điều chỉnh. Tệp này phải chỉ định đường dẫn dữ liệu đào tạo và xác thực , cũng như các thiết lập cụ thể khác của tập dữ liệu. | |
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 một tên siêu tham số và giá trị chỉ định phạm vi giá trị để khám phá trong quá trình điều chỉnh. Nếu không được cung cấp, YOLO11 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 theo epoch cho trình lập lịch ASHA trong Ray Tune. Trình lập lịch sẽ không chấm dứt bất kỳ thử nghiệm nào trước số epoch 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 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ý GPU sử dụng, đặc biệt là trong nhiều GPU môi trường. Nếu không được cung cấp, bộ điều chỉnh sẽ sử dụng tất cả GPU có sẵn. | Không có |
iterations |
int, optional |
Số lần thử nghiệm tối đa để chạy trong quá trình điều chỉnh. Tham số này giúp kiểm soát tổng số kết hợp siêu tham số được thử nghiệm, đả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 đến train() phương pháp trong quá trình điều chỉnh. Những đối số này có thể bao gồm các thiết lập như số kỷ nguyên đào tạo, kích thước lôvà các cấu hình đào tạo cụ thể khác. |
{} |
Bằng cách tùy chỉnh các tham số này, bạn có thể tinh chỉnh quy 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 sẵn có của mình.
Mô tả không gian tìm kiếm mặc định
Bảng sau đây liệt kê các tham số không gian tìm kiếm mặc định để điều chỉnh siêu tham số trong YOLO11 với Ray Tune. Mỗi tham số có một phạm vi giá trị cụ thể được xác định bởi tune.uniform()
.
Tham số | Phạm vi giá trị | Sự miêu tả |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Tốc độ học ban đầu |
lrf |
tune.uniform(0.01, 1.0) |
Yếu tố 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) |
Giảm cân |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Thời kỳ khởi động |
warmup_momentum |
tune.uniform(0.0, 0.95) |
Động lực khởi động |
box |
tune.uniform(0.02, 0.2) |
Hộp giảm cân |
cls |
tune.uniform(0.2, 4.0) |
Lớp giảm cân |
hsv_h |
tune.uniform(0.0, 0.1) |
Phạm vi tăng cường màu sắc |
hsv_s |
tune.uniform(0.0, 0.9) |
Phạm vi tăng cường độ bão hòa |
hsv_v |
tune.uniform(0.0, 0.9) |
Phạm vi tăng giá trị (độ sáng) |
degrees |
tune.uniform(0.0, 45.0) |
Phạm vi tăng cường quay (độ) |
translate |
tune.uniform(0.0, 0.9) |
Phạm vi tăng cường dịch thuật |
scale |
tune.uniform(0.0, 0.9) |
Phạm vi tăng cường tỷ lệ |
shear |
tune.uniform(0.0, 10.0) |
Phạm vi tăng cường cắt (độ) |
perspective |
tune.uniform(0.0, 0.001) |
Phạm vi tăng cường phối cảnh |
flipud |
tune.uniform(0.0, 1.0) |
Xác suất tăng cường lật dọc |
fliplr |
tune.uniform(0.0, 1.0) |
Xác suất tăng cường lật ngang |
mosaic |
tune.uniform(0.0, 1.0) |
Xác suất tăng cường khảm |
mixup |
tune.uniform(0.0, 1.0) |
Xác suất tăng cường hỗn hợp |
copy_paste |
tune.uniform(0.0, 1.0) |
Xác suất tăng cường sao chép-dán |
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 để điều chỉnh siêu tham số với Ray Tune và YOLO11 . Bằng cách cung cấp không gian tìm kiếm tùy chỉnh, bạn có thể tập trung quá trình điều chỉnh vào các siêu tham số cụ thể cần quan tâm.
Cách sử dụng
Trong đoạn mã trên, chúng ta tạo ra một YOLO mô hình với trọng số được đào tạo trước "yolo11n.pt". Sau đó, chúng tôi gọi tune()
phương pháp, chỉ định cấu hình tập dữ liệu với "coco8.yaml". Chúng tôi cung cấp không gian tìm kiếm tùy chỉnh cho tỷ lệ học ban đầu lr0
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 tôi truyền các đối số đào tạo bổ sung, chẳng hạn như số kỷ nguyên trực tiếp đến phương pháp điều chỉnh như epochs=50
.
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 qua các quy trình công việc chung để xử lý và phân tích các kết quả này.
Tải kết quả thí nghiệm điều chỉnh 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 hữu ích, đặc biệt nếu bạn đang thực hiện phân tích sau khi tập lệnh đào tạo 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
Nhận tổng quan về cách thực hiện thử nghiệm. Bạn có thể nhanh chóng kiểm tra xem có bất kỳ lỗi nào trong quá trình thử nghiệm không.
Phân tích cấp độ thử nghiệm cơ bản
Truy cập cấu hình siêu tham số thử nghiệm riêng lẻ và số liệu được báo cáo gần đây nhất.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
Vẽ biểu đồ toàn bộ lịch sử của các số liệu được báo cáo cho một thử nghiệm
Bạn có thể vẽ biểu đồ lịch sử các số liệu được báo cáo cho mỗi lần thử nghiệm để xem các số liệu đó thay đổi 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()
Bản tóm tắt
Trong tài liệu 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ủa các thí nghiệm chạy bằng Ray Tune bằng cách sử dụng Ultralytics Các bước chính bao gồm tải kết quả thí nghiệm từ thư mục, thực hiện phân tích cơ bản ở cấp độ thử nghiệm và cấp độ thử nghiệm và lập biểu đồ số liệu.
Khám phá thêm bằng cách xem trang tài liệu Analyze Results của Ray Tune để tận dụng 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 thế nào để tôi điều chỉnh các siêu tham số của tôi YOLO11 mô hình sử dụng Ray Tune?
Để điều chỉnh các siêu tham số của bạn Ultralytics YOLO11 mô hình sử dụng Ray Tune, hãy làm theo các bước sau:
-
Cài đặt các gói cần thiết:
-
Tải của bạn YOLO11 mô hình và bắt đầu điều chỉnh:
Đ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 của bạn. Để biết thêm thông tin, hãy xem tài liệu Ray Tune .
Siêu tham số mặc định là gì? YOLO11 điều chỉnh bằng Ray Tune?
Ultralytics YOLO11 sử dụng các siêu tham số mặc định sau để điều chỉnh bằng Ray Tune:
Tham số | Phạm vi giá trị | Sự miêu tả |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Tốc độ học ban đầu |
lrf |
tune.uniform(0.01, 1.0) |
Yếu tố 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) |
Giảm cân |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Thời kỳ khởi động |
box |
tune.uniform(0.02, 0.2) |
Hộp giảm cân |
cls |
tune.uniform(0.2, 4.0) |
Lớp giảm cân |
hsv_h |
tune.uniform(0.0, 0.1) |
Phạm vi tăng cường màu sắc |
translate |
tune.uniform(0.0, 0.9) |
Phạm vi tăng cường dịch thuật |
Các siêu tham số này có thể được tùy chỉnh để phù hợp với nhu cầu cụ thể của bạn. Để biết danh sách đầy đủ và thông tin chi tiết hơn, hãy tham khảo hướng dẫn Điều chỉnh siêu tham số .
Làm thế nào tôi có thể tích hợp Weights & Biases với tôi YOLO11 điều chỉnh mô hình?
Để tích hợp Weights & Biases (W&B) với bạn Ultralytics YOLO11 quá trình điều chỉnh:
-
Cài đặt W&B:
-
Sửa đổi tập lệnh điều chỉnh của bạn:
Thiết lập này sẽ cho phép bạn theo dõi quá trình điều 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 YOLO11 ?
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 Bayes và HyperOpt để tìm kiếm tham số hiệu quả.
- Tính song song: Hỗ trợ thực hiện song song nhiều lần 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 để chấm dứt sớm các thử nghiệm 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 YOLO11 , cung cấp giao diện dễ sử dụng để điều chỉnh siêu tham số hiệu quả. Để bắt đầu, hãy xem hướng dẫn Điều chỉnh siêu tham số hiệu quả với Ray Tune và YOLO11 .
Làm thế nào tôi có thể xác định một không gian tìm kiếm tùy chỉnh cho YOLO11 điều chỉnh siêu tham số?
Để xác định không gian tìm kiếm tùy chỉnh cho bạn YOLO11 điều chỉnh siêu tham số với Ray Tune:
from ray import tune
from ultralytics import YOLO
model = YOLO("yolo11n.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 siêu tham số như tốc độ học ban đầu và động lượng cần khám phá trong quá trình điều chỉnh. Để biết 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 .