# Custom Model Weights अपलोड करें

संबंधित पेज:

* Roboflow में एक मॉडल को प्रशिक्षित करने के लिए, देखें [एक Model train करें](/roboflow/roboflow-hi/train/train.md)
* मॉडल वेट्स डाउनलोड करने के लिए, देखें [Download Model Weights](/roboflow/roboflow-hi/deploy/download-roboflow-model-weights.md)

## Roboflow के बाहर प्रशिक्षित वेट्स अपलोड करना

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

### मॉडल सपोर्ट

देखें [समर्थित मॉडल्स तालिका](/roboflow/roboflow-hi/deploy/supported-models.md) वेट्स अपलोड संगतता के विवरण के लिए।

{% 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" %}
बड़े मॉडल आकार बेहतर प्रशिक्षण परिणाम देते हैं। हालांकि, मॉडल आकार जितना बड़ा होगा, प्रशिक्षण समय और inference (मॉडल prediction) गति उतनी ही धीमी होगी। इस बात पर विचार करें कि क्या आप तेज़ी से चलने वाली वस्तुओं या वीडियो फ़ीड्स पर real-time inference चाहते हैं (छोटा मॉडल बेहतर होगा), या आप डेटा को उसके एकत्र होने के बाद प्रोसेस कर रहे हैं और अधिक prediction accuracy की चिंता है (बड़ा मॉडल चुनें)।
{% endhint %}

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

Roboflow आपके प्रोजेक्ट्स में मॉडल्स को deploy करने के लिए दो अलग-अलग approaches प्रदान करता है, जिनमें से प्रत्येक अलग-अलग use cases और organizational needs के लिए है। versioned और versionless deployments के बीच चुनाव इस पर निर्भर करता है कि क्या आपको dataset versions के साथ model evolution को track करना है, या आप अपने workspace में multiple projects के बीच models share करना चाहते हैं।

* **Versionless Deployments**
  * workspace स्तर से जुड़े
  * एक साथ कई projects में deploy किए जा सकते हैं
  * एक ही workspace के भीतर अलग-अलग projects में models share करने के लिए आदर्श
* **Versioned Deployments**
  * विशिष्ट project versions से जुड़े
  * dataset version प्रति एक model
  * dataset versions के साथ model evolution को track करने के लिए आदर्श
  * Label Assist पर model का उपयोग करने के लिए आदर्श
  * अन्य models के training के लिए checkpoint के रूप में model का उपयोग करने के लिए आदर्श

### Custom Weights अपलोड करें

सबसे पहले, सुनिश्चित करें कि आपके पास नवीनतम `roboflow` Python package installed है:

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

{% tabs %}
{% tab title="Python SDK (Versionless)" %}
versionless custom weights अपलोड करने के लिए, इस का उपयोग करें `workspace.deploy_model()` method:

```python
workspace.deploy_model(
    model_type="yolov8",  # मॉडल का प्रकार
    model_path="path/to/model",  # मॉडल directory का path
    project_ids=["project1", "project2"],  # project IDs की सूची
    model_name="my-model",  # मॉडल के लिए नाम (कम से कम 1 अक्षर होना चाहिए, और numbers तथा dashes स्वीकार होने चाहिए)
    filename="weights/best.pt"  # weights file का path (default)
)
```

**Parameters**

* model\_type (str): deploy किए जाने वाले model का type (उदा., "yolov8", "yolov11")
* model\_path (str): model weights वाली directory का file path
* project\_ids (list\[str]): model को deploy करने के लिए project IDs की सूची
* model\_name (str): model की पहचान के लिए नाम - (कम से कम 1 अक्षर होना चाहिए, और numbers तथा dashes स्वीकार होने चाहिए)
* filename (str, optional): weights file का नाम (default "weights/best.pt" है)

**Example**

```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 model को केवल एक संबंधित dataset version से जोड़ा जाना चाहिए। यदि आपके dataset में कोई version generated नहीं है, तो आप बना सकते हैं [in-app](/roboflow/roboflow-hi/datasets/dataset-versions/create-a-dataset-version.md) या इस के माध्यम से [API](/developer/python-sdk/create-a-dataset-version.md).

docs देखें [API के माध्यम से version कैसे load करें](/developer/rest-api/versions/view-a-version.md) या नीचे दिए गए example को देखें।
{% endhint %}

custom weights अपलोड करने के लिए, इस का उपयोग करें `version.deploy()` Python SDK में method.

**Usage**

```python
version.deploy(
    model_type="yolov8",  # मॉडल का प्रकार
    model_path="path/to/model",  # मॉडल directory का path
    filename="weights/best.pt"  # weights file का path (default)
)
```

**Parameters**

* model\_type (str): deploy किए जाने वाले model का प्रकार (उदा., "yolov8", "yolov11")
* model\_path (str): model weights वाली directory का file path
* filename (str, optional): weights file का नाम (default "weights/best.pt" है)

**Example**

```python
from roboflow import Roboflow

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

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

#example1 - directory path "training1/model1.pt" है yolov8 model के लिए
version.deploy("yolov8", "training1", "model1.pt")

#example2 - directory path "training1/weights/best.pt" है yolov8 model के लिए
version.deploy("yolov8", "training1")
```

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

1. एक version में एक समय पर केवल एक trained model हो सकता है
2. उस version में upload करने का प्रयास जिसमें पहले से model है, 429 error का परिणाम होगा
   {% endtab %}

{% tab title="CLI (Versionless और versioned)" %}
**Authentication**

किसी भी CLI commands का उपयोग करने से पहले, आपको Roboflow के साथ authenticate करना होगा:

1. Authentication command चलाएँ: `roboflow login`
2. terminal में दिखाई गई URL पर जाएँ: <https://app.roboflow.com/auth-cli>
3. website से अपना authentication token प्राप्त करें
4. अपने terminal में token paste करें

credentials स्वचालित रूप से यहाँ save हो जाएँगे `~/.config/roboflow/config.json`

**Model Weights अपलोड करना**

Roboflow CLI आपके Roboflow projects में trained model weights अपलोड करने के लिए एक command प्रदान करता है। यह तब उपयोगी है जब आप custom-trained models को Roboflow पर deploy करना चाहते हैं।

**Basic Usage**

{% 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 %}

**Parameters**

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

**Examples**

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

{% endtab %}
{% endtabs %}

## Next Steps

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-hi/deploy/upload-custom-weights.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
