सामग्री पर जाएं

रे ट्यून के साथ कुशल हाइपरपैरामीटर ट्यूनिंग और YOLOv8

Hyperparameter tuning is vital in achieving peak model performance by discovering the optimal set of hyperparameters. This involves running trials with different hyperparameters and evaluating each trial's performance.

के साथ ट्यूनिंग में तेजी लाएं Ultralytics YOLOv8 और रे ट्यून

Ultralytics YOLOv8 हाइपरपैरामीटर ट्यूनिंग के लिए रे ट्यून को शामिल करता है, के अनुकूलन को सुव्यवस्थित करता है YOLOv8 मॉडल हाइपरपैरामीटर। रे ट्यून के साथ, आप ट्यूनिंग प्रक्रिया को तेज करने के लिए उन्नत खोज रणनीतियों, समांतरता और शुरुआती रोक का उपयोग कर सकते हैं।

रे ट्यून

रे ट्यून अवलोकन

रे ट्यून एक हाइपरपैरामीटर ट्यूनिंग लाइब्रेरी है जिसे दक्षता और लचीलेपन के लिए डिज़ाइन किया गया है। यह विभिन्न खोज रणनीतियों, समांतरता और शुरुआती रोक रणनीतियों का समर्थन करता है, और मूल रूप से लोकप्रिय मशीन लर्निंग फ्रेमवर्क के साथ एकीकृत करता है, जिसमें शामिल हैं Ultralytics YOLOv8.

के साथ एकीकरण Weights & Biases

YOLOv8 के साथ वैकल्पिक एकीकरण की भी अनुमति देता है Weights & Biases ट्यूनिंग प्रक्रिया की निगरानी के लिए।

संस्थापन

आवश्यक पैकेज स्थापित करने के लिए, चलाएं:

संस्थापन

# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"

# Optionally install W&B for logging
pip install wandb

उपयोग

उपयोग

from ultralytics import YOLO

# Load a YOLOv8n model
model = YOLO("yolov8n.pt")

# Start tuning hyperparameters for YOLOv8n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)

tune() विधि पैरामीटर

वही tune() विधि में YOLOv8 रे ट्यून के साथ हाइपरपैरामीटर ट्यूनिंग के लिए उपयोग में आसान इंटरफ़ेस प्रदान करता है। यह कई तर्कों को स्वीकार करता है जो आपको ट्यूनिंग प्रक्रिया को अनुकूलित करने की अनुमति देते हैं। नीचे प्रत्येक पैरामीटर का विस्तृत विवरण दिया गया है:

प्राचल प्रकार या क़िस्‍म डिफ़ॉल्ट मान
data str डेटासेट कॉन्फ़िगरेशन फ़ाइल (YAML प्रारूप में) ट्यूनर को चालू करने के लिए। इस फ़ाइल को प्रशिक्षण और सत्यापन डेटा पथ, साथ ही अन्य डेटासेट-विशिष्ट सेटिंग्स निर्दिष्ट करनी चाहिए।
space dict, optional रे ट्यून के लिए हाइपरपैरामीटर खोज स्थान को परिभाषित करने वाला एक शब्दकोश। प्रत्येक कुंजी एक hyperparameter नाम से मेल खाती है, और मान ट्यूनिंग के दौरान पता लगाने के लिए मूल्यों की श्रेणी निर्दिष्ट करता है। यदि प्रदान नहीं किया गया है, YOLOv8 विभिन्न हाइपरपैरामीटर के साथ एक डिफ़ॉल्ट खोज स्थान का उपयोग करता है।
grace_period int, optional रे ट्यून में आशा शेड्यूलर के लिए युगों में अनुग्रह अवधि। शेड्यूलर इस संख्या के युगों से पहले किसी भी परीक्षण को समाप्त नहीं करेगा, जिससे मॉडल को जल्दी रोकने का निर्णय लेने से पहले कुछ न्यूनतम प्रशिक्षण मिल सके। 10
gpu_per_trial int, optional ट्यूनिंग के दौरान प्रति परीक्षण आवंटित करने के लिए GPU की संख्या। यह GPU उपयोग को प्रबंधित करने में मदद करता है, विशेष रूप से बहु-GPU वातावरण में। यदि प्रदान नहीं किया गया है, तो ट्यूनर सभी उपलब्ध GPU का उपयोग करेगा। कोई नहीं
iterations int, optional ट्यूनिंग के दौरान चलने वाले परीक्षणों की अधिकतम संख्या। यह पैरामीटर परीक्षण किए गए हाइपरपैरामीटर संयोजनों की कुल संख्या को नियंत्रित करने में मदद करता है, यह सुनिश्चित करता है कि ट्यूनिंग प्रक्रिया अनिश्चित काल तक न चले। 10
**train_args dict, optional पास करने के लिए अतिरिक्त तर्क train() ट्यूनिंग के दौरान विधि। इन तर्कों में प्रशिक्षण युगों की संख्या, बैच आकार और अन्य प्रशिक्षण-विशिष्ट कॉन्फ़िगरेशन जैसी सेटिंग्स शामिल हो सकती हैं। {}

इन मापदंडों को अनुकूलित करके, आप अपनी विशिष्ट आवश्यकताओं और उपलब्ध कम्प्यूटेशनल संसाधनों के अनुरूप हाइपरपैरामीटर अनुकूलन प्रक्रिया को ठीक कर सकते हैं।

डिफ़ॉल्ट खोज स्थान विवरण

निम्न तालिका में hyperparameter ट्यूनिंग के लिए डिफ़ॉल्ट खोज स्थान पैरामीटर को सूचीबद्ध करता है YOLOv8 रे ट्यून के साथ। प्रत्येक पैरामीटर में एक विशिष्ट मान श्रेणी होती है जिसे निम्न द्वारा परिभाषित किया जाता है tune.uniform().

प्राचल मूल्य सीमा या क़िस्‍म
lr0 tune.uniform(1e-5, 1e-1) प्रारंभिक सीखने की दर
lrf tune.uniform(0.01, 1.0) अंतिम सीखने की दर कारक
momentum tune.uniform(0.6, 0.98) संवेग बल
weight_decay tune.uniform(0.0, 0.001) वजन में गिरावट
warmup_epochs tune.uniform(0.0, 5.0) वार्मअप युग
warmup_momentum tune.uniform(0.0, 0.95) वार्मअप गति
box tune.uniform(0.02, 0.2) बॉक्स घटाने वजन
cls tune.uniform(0.2, 4.0) कक्षा घटाने का वजन
hsv_h tune.uniform(0.0, 0.1) ह्यू वृद्धि रेंज
hsv_s tune.uniform(0.0, 0.9) संतृप्ति वृद्धि रेंज
hsv_v tune.uniform(0.0, 0.9) मान (चमक) वृद्धि सीमा
degrees tune.uniform(0.0, 45.0) रोटेशन वृद्धि रेंज (डिग्री)
translate tune.uniform(0.0, 0.9) अनुवाद वृद्धि सीमा
scale tune.uniform(0.0, 0.9) स्केलिंग वृद्धि रेंज
shear tune.uniform(0.0, 10.0) कतरनी वृद्धि रेंज (डिग्री)
perspective tune.uniform(0.0, 0.001) परिप्रेक्ष्य वृद्धि रेंज
flipud tune.uniform(0.0, 1.0) लंबवत फ्लिप वृद्धि संभावना
fliplr tune.uniform(0.0, 1.0) क्षैतिज फ्लिप वृद्धि संभावना
mosaic tune.uniform(0.0, 1.0) मोज़ेक वृद्धि की संभावना
mixup tune.uniform(0.0, 1.0) मिक्सअप वृद्धि की संभावना
copy_paste tune.uniform(0.0, 1.0) कॉपी-पेस्ट वृद्धि संभावना

कस्टम खोज स्थान उदाहरण

इस उदाहरण में, हम प्रदर्शित करते हैं कि रे ट्यून के साथ हाइपरपैरामीटर ट्यूनिंग के लिए कस्टम खोज स्थान का उपयोग कैसे करें और YOLOv8. एक कस्टम खोज स्थान प्रदान करके, आप ट्यूनिंग प्रक्रिया को रुचि के विशिष्ट हाइपरपैरामीटर पर केंद्रित कर सकते हैं।

उपयोग

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolov8n.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,
)

ऊपर दिए गए कोड स्निपेट में, हम एक YOLO " के साथ मॉडलyolov8n.pt" पूर्व-प्रशिक्षित वजन। फिर, हम tune() विधि, "coco8.yaml" के साथ डेटासेट कॉन्फ़िगरेशन निर्दिष्ट करना। हम प्रारंभिक सीखने की दर के लिए एक कस्टम खोज स्थान प्रदान करते हैं lr0 कुंजी "LR0" और मान के साथ एक शब्दकोश का उपयोग करना tune.uniform(1e-5, 1e-1). अंत में, हम अतिरिक्त प्रशिक्षण तर्क पास करते हैं, जैसे कि युगों की संख्या सीधे धुन विधि के रूप में epochs=50.

रे ट्यून परिणाम संसाधित करना

रे ट्यून के साथ हाइपरपैरामीटर ट्यूनिंग प्रयोग चलाने के बाद, आप प्राप्त परिणामों पर विभिन्न विश्लेषण करना चाह सकते हैं। यह मार्गदर्शिका आपको इन परिणामों के प्रसंस्करण और विश्लेषण के लिए सामान्य कार्यप्रवाहों के माध्यम से ले जाएगी।

एक निर्देशिका से धुन प्रयोग परिणाम लोड हो रहा है

के साथ ट्यूनिंग प्रयोग चलाने के बाद tuner.fit(), आप एक निर्देशिका से परिणाम लोड कर सकते हैं। यह उपयोगी है, खासकर यदि आप प्रारंभिक प्रशिक्षण स्क्रिप्ट से बाहर निकलने के बाद विश्लेषण कर रहे हैं।

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()

बुनियादी प्रयोग-स्तर विश्लेषण

परीक्षणों के प्रदर्शन का अवलोकन प्राप्त करें. आप जल्दी से जांच कर सकते हैं कि परीक्षणों के दौरान कोई त्रुटि थी या नहीं।

if result_grid.errors:
    print("One or more trials failed!")
else:
    print("No errors!")

बुनियादी परीक्षण-स्तर विश्लेषण

व्यक्तिगत परीक्षण हाइपरपैरामीटर कॉन्फ़िगरेशन और अंतिम रिपोर्ट किए गए मैट्रिक्स तक पहुँचें।

for i, result in enumerate(result_grid):
    print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")

एक परीक्षण के लिए रिपोर्ट किए गए मैट्रिक्स के पूरे इतिहास की साजिश रचना

आप प्रत्येक परीक्षण के लिए रिपोर्ट किए गए मीट्रिक का इतिहास यह देखने के लिए प्लॉट कर सकते हैं कि समय के साथ मीट्रिक कैसे विकसित हुई.

import matplotlib.pyplot as plt

for result in 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()

सारांश

इस प्रलेखन में, हमने रे ट्यून के साथ चलाए गए प्रयोगों के परिणामों का विश्लेषण करने के लिए सामान्य वर्कफ़्लोज़ को कवर किया Ultralytics. प्रमुख चरणों में एक निर्देशिका से प्रयोग परिणामों को लोड करना, बुनियादी प्रयोग-स्तर और परीक्षण-स्तर विश्लेषण करना और मैट्रिक्स की साजिश रचना करना शामिल है।

Explore further by looking into Ray Tune's Analyze Results docs page to get the most out of your hyperparameter tuning experiments.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (9)

टिप्पणियाँ