# Upload Custom Model Weights

एक बार जब आप अपना कस्टम मॉडल प्रशिक्षण पूरा कर लें, तो Roboflow प्रोजेक्ट में वापस अपने मॉडल वेट्स अपलोड करें ताकि आप निम्न लाभ उठा सकें: [Roboflow Inference](https://inference.roboflow.com/).

### मॉडल समर्थन

संदर्भ के लिए देखें: [Supported Models table](https://docs.roboflow.com/roboflow/roboflow-hi/deploy/supported-models) वेट्स अपलोड संगतता के विवरण के लिए।

{% hint style="warning" %}

* YOLOv8 मॉडलों को इस पर प्रशिक्षित किया जाना चाहिए: `ultralytics==8.0.196`
* YOLOv9 मॉडलों को प्रशिक्षित और अपलोड करने के लिए इस का उपयोग करना चाहिए: `ultralytics` से <https://github.com/WongKinYiu/yolov9>
* YOLOv10 मॉडलों को प्रशिक्षित और अपलोड करने के लिए इस का उपयोग करना चाहिए: `ultralytics` से

  <https://github.com/THU-MIG/yolov10>
* YOLOv11 मॉडलों को इस पर प्रशिक्षित किया जाना चाहिए: `ultralytics<=8.3.40`
* YOLOv12 मॉडलों को प्रशिक्षित और अपलोड करने के लिए इस का उपयोग करना चाहिए: `ultralytics` से <https://github.com/sunsmarterjie/yolov12>
  {% endhint %}

{% hint style="info" %}
बड़े मॉडल साइज बेहतर प्रशिक्षण परिणाम देते हैं। हालाँकि,\_model\_ जितना बड़ा होगा, प्रशिक्षण समय और इन्फ़रेंस (मॉडल प्रेडिक्शन) की गति उतनी ही धीमी होगी। विचार करें कि क्या आप तेज़ी से चलने वाली वस्तुओं या वीडियो फीड पर वास्तविक-समय इन्फ़रेंस चाहते हैं (तो छोटे मॉडल का उपयोग बेहतर होगा), या आप डेटा एकत्र करने के बाद प्रोसेस कर रहे हैं और उच्च भविष्यवाणी सटीकता की परवाह कर रहे हैं (तो बड़े मॉडल का चयन करें)।
{% endhint %}

### Versioned बनाम Versionless मॉडल अपलोड

Roboflow आपकी परियोजनाओं में मॉडल तैनात करने के लिए दो अलग-अलग दृष्टिकोण प्रदान करता है, जो विभिन्न उपयोग-मामलों और संगठनात्मक आवश्यकताओं की सेवा करते हैं। Versioned और versionless तैनाती के बीच चयन इस बात पर निर्भर करता है कि क्या आपको dataset वर्ज़न के साथ मॉडल के विकास को ट्रैक करने की आवश्यकता है या आप अपने workspace में कई परियोजनाओं में मॉडल साझा करना चाहते हैं।

* **Versionless Deployments**
  * workspace स्तर से जुड़ा हुआ
  * एक साथ कई परियोजनाओं पर तैनात किया जा सकता है
  * एक ही workspace के भीतर विभिन्न प्रोजेक्ट्स के बीच मॉडल साझा करने के लिए आदर्श
* **Versioned Deployments**
  * विशेष प्रोजेक्ट वर्ज़नों से जुड़ा हुआ
  * प्रत्येक dataset वर्ज़न के लिए एक मॉडल
  * dataset वर्ज़नों के साथ मॉडल के विकास को ट्रैक करने के लिए आदर्श
  * Label Assist पर मॉडल का उपयोग करने के लिए आदर्श
  * अन्य मॉडलों के प्रशिक्षण के लिए चेकपॉइंट के रूप में मॉडल उपयोग करने के लिए आदर्श

### कस्टम वेट्स अपलोड करें

पहले, सुनिश्चित करें कि आपके पास नवीनतम `roboflow` Python पैकेज इंस्टॉल है:&#x20;

```bash
pip install --update roboflow
```

{% tabs %}
{% tab title="Python SDK (Versionless)" %}
Versionless कस्टम वेट्स अपलोड करने के लिए, निम्न का उपयोग करें: `workspace.deploy_model()` मेथड:

```python
workspace.deploy_model(
    model_type="yolov8",  # मॉडल का प्रकार
    model_path="path/to/model",  # मॉडल डायरेक्टरी का पथ
    project_ids=["project1", "project2"],  # प्रोजेक्ट IDs की सूची
    model_name="my-model",  # मॉडल का नाम (कम से कम 1 अक्षर होना चाहिए, और नंबर व डैश स्वीकार करता है)
    filename="weights/best.pt"  # वेट्स फाइल का पथ (डिफ़ॉल्ट)
)
```

**पैरामीटर**

* model\_type (str): तैनात किया जा रहा मॉडल का प्रकार (उदा., "yolov8", "yolov11")
* model\_path (str): उस डायरेक्टरी का फ़ाइल पथ जिसमें मॉडल वेट्स हैं
* project\_ids (list\[str]): उन प्रोजेक्ट IDs की सूची जिन पर मॉडल तैनात करना है
* model\_name (str): मॉडल की पहचान करने के लिए नाम - (कम से कम 1 अक्षर होना चाहिए, और नंबर व डैश स्वीकार करता है)
* filename (str, optional): वेट्स फ़ाइल का नाम (डिफ़ॉल्ट: "weights/best.pt")

**उदाहरण**

```python
from roboflow import Roboflow

rf = Roboflow(api_key="YOUR_API_KEY")
workspace = rf.workspace("YOUR_WORKSPACE")

workspace.deploy_model(
  model_type="yolov8",
  model_path="./runs/train/weights",
  project_ids=["project-1", "project-2", "project-3"],
  model_name="my-custom-model"
)
```

{% endtab %}

{% tab title="Python SDK (Versioned)" %}
{% hint style="info" %}
एक versioned मॉडल को केवल एक संबंधित dataset वर्ज़न से जोड़ा जाना चाहिए। यदि आपके dataset में कोई वर्ज़न जनरेट नहीं है, तो आप एक बना सकते हैं [in-app](https://docs.roboflow.com/roboflow/roboflow-hi/datasets/dataset-versions/create-a-dataset-version) या के माध्यम से [API](https://app.gitbook.com/s/e5GEiPeDoFksvZv1vH3A/python-sdk/create-a-dataset-version).

देखें डॉक्‍यूमेंट्स पर [API के माध्यम से वर्ज़न लोड करने के तरीके](https://app.gitbook.com/s/e5GEiPeDoFksvZv1vH3A/rest-api/versions/view-a-version) या नीचे दिए उदाहरण को संदर्भित करें।
{% endhint %}

कस्टम वेट्स अपलोड करने के लिए, निम्न का उपयोग करें: `version.deploy()` Python SDK में मेथड।

**उपयोग**

```python
version.deploy(
    model_type="yolov8",  # मॉडल का प्रकार
    model_path="path/to/model",  # मॉडल डायरेक्टरी का पथ
    filename="weights/best.pt"  # वेट्स फाइल का पथ (डिफ़ॉल्ट)
)
```

**पैरामीटर**

* model\_type (str): तैनात किए जाने वाले मॉडल का प्रकार (उदा., "yolov8", "yolov11")
* model\_path (str): उस डायरेक्टरी का फ़ाइल पथ जिसमें मॉडल वेट्स हैं
* filename (str, optional): वेट्स फ़ाइल का नाम (डिफ़ॉल्ट: "weights/best.pt")

**उदाहरण**

```python
from roboflow import Roboflow

rf = Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace().project("PROJECT_ID")

#weights_filename निर्दिष्ट कर सकते हैं, डिफ़ॉल्ट "weights/best.pt" है
version = project.version(VERSION_ID)

#example1 - yolov8 मॉडल के लिए डायरेक्टरी पथ "training1/model1.pt" है
version.deploy("yolov8", "training1", "model1.pt")

#example2 - yolov8 मॉडल के लिए डायरेक्टरी पथ "training1/weights/best.pt" है
version.deploy("yolov8", "training1")
```

**महत्वपूर्ण नोट्स**

1. एक वर्ज़न में एक समय पर केवल एक प्रशिक्षित मॉडल हो सकता है
2. किसी वर्ज़न पर अपलोड करने का प्रयास जिसमें पहले से मॉडल मौजूद है तो 429 त्रुटि होगी
   {% endtab %}

{% tab title="CLI (Versionless और versioned)" %}
**प्रमाणीकरण**

किसी भी CLI कमांड का उपयोग करने से पहले, आपको Roboflow के साथ प्रमाणीकृत होना चाहिए:

1. प्रमाणीकरण कमांड चलाएँ: `roboflow login`
2. टर्मिनल में दिखाए गए URL पर जाएँ: <https://app.roboflow.com/auth-cli>
3. वेबसाइट से अपना प्रमाणीकरण टोकन प्राप्त करें
4. टोकन को अपने टर्मिनल में पेस्ट करें

क्रेडेंशियल्स स्वतः सहेजे जाएंगे: `~/.config/roboflow/config.json`

**मॉडल वेट्स अपलोड करना**

Roboflow CLI एक कमांड प्रदान करता है ताकि प्रशिक्षित मॉडल वेट्स को आपके Roboflow प्रोजेक्ट्स में अपलोड किया जा सके। यह तब उपयोगी है जब आप कस्टम-प्रशिक्षित मॉडलों को Roboflow पर तैनात करना चाहें।

**बुनियादी उपयोग**

{% code overflow="wrap" %}

```bash
roboflow upload_model -w <workspace> -p <project> -t <model_type> -m <model_path> [-v <version>] [-f <filename>] [-n <model_name>]
```

{% endcode %}

**पैरामीटर**

* `-w, --workspace`: आपका workspace ID या URL (वैकल्पिक - यदि निर्दिष्ट नहीं किया गया है तो डिफ़ॉल्ट workspace उपयोग किया जाएगा)
* `-p, --project`: मॉडल अपलोड करने का प्रोजेक्ट ID (versionless अपलोड के लिए कई बार निर्दिष्ट किया जा सकता है कई प्रोजेक्ट्स के लिए)
* `-t, --model_type`: मॉडल का प्रकार (उदा., yolov8, paligemma2)
* `-m, --model_path`: प्रशिक्षित मॉडल फ़ाइल वाली डायरेक्टरी का पथ
* `-v, --version_number`: जिस वर्ज़न नंबर पर मॉडल अपलोड करना है (वैकल्पिक)
* `-f, --filename`: मॉडल फ़ाइल का नाम (डिफ़ॉल्ट: "weights/best.pt")
* `-n, --model_name`: मॉडल का नाम (versionless मॉडल deploy के लिए अनिवार्य)

**उदाहरण**

<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"># 1. किसी विशिष्ट वर्ज़न में मॉडल अपलोड करें: 
<strong>roboflow upload_model -w my-workspace -p my-project -v 1 -t yolov8 -m ./weights
</strong>
# 2. कई प्रोजेक्ट्स पर versionless मॉडल अपलोड करें:
roboflow upload_model -w my-workspace -p project1 -p project2 -t yolov11 -n my-model-v1 -m ./weights
# 3. एक अकेले प्रोजेक्ट पर versionless RF-DETR medium मॉडल अपलोड करें: 
roboflow upload_model -w my-workspace -p my-project -t rfdetr-medium -n my-model-name -m ./ -f weights.pt
</code></pre>

{% endtab %}
{% endtabs %}

## अगले कदम

1. अपने मॉडल को Roboflow के "Models" टैब में देखें
2. स्थानीय रूप से अपने मॉडल को चलाएँ साथ में [Roboflow Inference Server](https://inference.roboflow.com/).
3. [अपना मॉडल तैनात करें](https://docs.roboflow.com/roboflow/roboflow-hi/deploy/deployment-overview)
