> ## Documentation Index
> Fetch the complete documentation index at: https://benchgen.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload a Model

> Bring your own base model into Train: which formats can be fine-tuned, what the archive should contain, and HuggingFace examples.

The **Base Model** picker in [Fine-tune a Model](/docs/train/fine-tune-a-model) can search HuggingFace directly, but this page is about the other path: uploading your own weights as a `.zip`, the same flow whether you start it from Eval's Models page or from Train. It's the same **Add Model** screen either way, so the steps below walk it end to end, focused on the **File** tab rather than the HuggingFace search tab.

## Step 1: Open Models and click Add Model

In the left sidebar, click **Models**, then **+ Add Model** in the top right.

<Frame caption="The AI Models page, with Add Model in the top right">
  <img src="https://mintcdn.com/benchgen-8fc81371/JrpW9W5H7MKVocNa/images/eval/add-model/01-models-add-button.jpg?fit=max&auto=format&n=JrpW9W5H7MKVocNa&q=85&s=9749c1281e85a2f1244cc83f5f63c9a4" alt="The AI Models page listing deployed and base models, with the Add Model button in the top right" width="1478" height="941" data-path="images/eval/add-model/01-models-add-button.jpg" />
</Frame>

This is the same Models list Eval uses, every model you register here, uploaded or imported, is available to both Eval benchmarks and Train fine-tuning jobs. You don't register a model twice for the two sections.

## Step 2: Name the model

Give it a name and, optionally, a short description, then click **Add Model** to continue.

<Frame caption="The Add Model panel: name and description, before you've picked a source">
  <img src="https://mintcdn.com/benchgen-8fc81371/JrpW9W5H7MKVocNa/images/eval/add-model/02-basic-details.jpg?fit=max&auto=format&n=JrpW9W5H7MKVocNa&q=85&s=1669566307e7c1e083c7f07f3b277750" alt="The Add Model panel with a model name field, a description textarea, and Cancel/Add Model buttons" width="1478" height="941" data-path="images/eval/add-model/02-basic-details.jpg" />
</Frame>

The model is created as a **Draft** at this point, nothing is uploaded yet. Naming happens before you pick a source because the same draft can be filled in either way, by file or by HuggingFace, on the next screen.

## Step 3: Upload the archive on the File tab

The model card opens on an **Add Model** card with two tabs, **File** and **HF model**. Stay on **File**: drag and drop your `.zip` onto the dashed area, or click **Browse Files**.

<Frame caption="The File tab: drag-and-drop area for a model archive, with Browse Files as the alternative">
  <img src="https://mintcdn.com/benchgen-8fc81371/JrpW9W5H7MKVocNa/images/eval/add-model/03-source-file.jpg?fit=max&auto=format&n=JrpW9W5H7MKVocNa&q=85&s=de7f59bb91d145a1578fc0ec33a7d04c" alt="The File tab on the Add Model card, showing a dashed drag-and-drop zone reading 'A .zip with config.json and model weights', a Browse Files button, and a disabled Add model button" width="1478" height="941" data-path="images/eval/add-model/03-source-file.jpg" />
</Frame>

The **Add model** button underneath stays disabled until a valid file is attached, BenchGen validates the archive in your browser before it starts uploading, so a bad archive fails immediately instead of after a multi-GB upload.

This is the same **File** tab documented in [Add a Model → Option A — Upload a file](/docs/eval/add-a-model#option-a-%E2%80%94-upload-a-file), whether you get there from Eval's Models page or from here.

## What has to be inside the zip

<Frame caption="A merged model's zip contents, viewed on Windows: config.json, model.safetensors, and the tokenizer files, no subfolder">
  <img src="https://mintcdn.com/benchgen-8fc81371/4FwYeG_Fd1WvnBa5/images/train/upload-model/01-zip-contents.jpg?fit=max&auto=format&n=4FwYeG_Fd1WvnBa5&q=85&s=d2750fc00527d218c163f4b8f139d189" alt="A Windows archive manager showing ft-Qwen3-0.6B-mq102kd2_merged.zip containing config.json, model.safetensors, tokenizer.json, tokenizer_config.json, generation_config.json, and chat_template.jinja" width="789" height="518" data-path="images/train/upload-model/01-zip-contents.jpg" />
</Frame>

| Required      | Details                                                                                                                     |
| ------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `config.json` | At the root of the archive, or in a subfolder. This is what makes it a recognizable HuggingFace-format model.               |
| Model weights | At least one of: `*.safetensors` (preferred), `pytorch_model.bin` (or `model.bin`), `tf_model.h5`, or `flax_model.msgpack`. |

| Recommended for fine-tuning                                          | Why                                                                                                                                                    |
| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `tokenizer.json`, `tokenizer_config.json`, `special_tokens_map.json` | Training needs the exact tokenizer the model was built with. These ship by default if you download a full repo snapshot instead of hand-picking files. |

<Warning>
  No executables or scripts, inside the zip or in its filename. Archives containing `.exe`, `.sh`, `.bat`, `.py`, and similar are rejected outright, and so is an archive whose own filename looks like one of those.
</Warning>

## Which HuggingFace models you can and can't use

<Warning>
  **GGUF models cannot be fine-tuned.** GGUF is an inference-only, quantized format for llama.cpp / Ollama, there's no full-precision weight tensor for a LoRA adapter to attach to. If a repo's name ends in `-GGUF`, that's the tell.
</Warning>

| Format on HuggingFace                                                   | Can you fine-tune it?   |
| ----------------------------------------------------------------------- | ----------------------- |
| Standard `transformers` repo (`.safetensors` or `.bin` + `config.json`) | Yes                     |
| `-GGUF` repos (llama.cpp / Ollama quantized)                            | No, inference-only      |
| `-AWQ`, `-GPTQ` (pre-quantized inference formats)                       | No, same reason as GGUF |

If you want a smaller memory footprint during training, use the training job's own **Quantization** option (QLoRA-style), not a pre-quantized checkpoint downloaded from the Hub.

### A short model catalog to start from

Open-weight, instruction-tuned models that are known to work well as fine-tuning bases:

| Model                              | Params | Notes                           |
| ---------------------------------- | ------ | ------------------------------- |
| `Qwen/Qwen2.5-7B-Instruct`         | 7B     | Strong general-purpose baseline |
| `Qwen/Qwen2.5-Math-7B-Instruct`    | 7B     | Math-tuned variant              |
| `meta-llama/Llama-3.1-8B-Instruct` | 8B     | Strong general reasoner         |
| `microsoft/Phi-3.5-mini-instruct`  | 3.8B   | Fast, fits on smaller GPUs      |

<Tip>
  Prefer the smallest model that's plausible for your task. A 1.5B–8B instruction-tuned model with QLoRA trains far faster and cheaper than reaching for the largest checkpoint you can find.
</Tip>

## Step 4: Confirm the model is ready

Once the upload finishes, BenchGen registers the model and provisions its endpoint. The status flips from **Draft** to **ready**, and the model card fills in its **model name**, **Endpoint URL**, access **Token**, and format (for example **SAFETENSORS**).

<Frame caption="A registered model, ready, showing its endpoint details and format">
  <img src="https://mintcdn.com/benchgen-8fc81371/GS-jE79kedyHq-tA/images/eval/add-model/07-model-ready.jpg?fit=max&auto=format&n=GS-jE79kedyHq-tA&q=85&s=caa8114aa11a649a32bb8900a9aeae8a" alt="A model card showing Deployed and ready status, its model name, endpoint URL, token, upload date, and SAFETENSORS format" width="1478" height="941" data-path="images/eval/add-model/07-model-ready.jpg" />
</Frame>

It now appears under **My Models** in the Base Model picker on the [Fine-tune a Model](/docs/train/fine-tune-a-model) form, ready to select as your starting point.

## Next Steps

<CardGroup cols={2}>
  <Card title="Fine-tune a Model" icon="sliders" href="/docs/train/fine-tune-a-model">
    Pick this model as your base and configure the run.
  </Card>

  <Card title="Add a Model" icon="circle-plus" href="/docs/eval/add-a-model">
    The same Add Model flow, covering the HuggingFace import path too.
  </Card>
</CardGroup>
