# Import Presets

First, click the presets dropdown in the sidebar. You will see a list of your presets along with 2 buttons: `+ New Preset` and `Import`.

Click the `Import` button to import a preset.

<img src="/assets/docs/preset-import-button.png" data-caption="Import Presets" />

## Import Presets from File

Once you click the Import button, you can select the source of the preset you want to import. You can either import from a file or from a URL.
<img src="/assets/docs/import-preset-from-file.png" data-caption="Import one or more Presets from file" />

## Import Presets from URL

Presets that are [published](/docs/app/presets/publish) to the LM Studio Hub can be imported by providing their URL.

Importing public presets does not require logging in within LM Studio.

<img src="/assets/docs/import-preset-from-url.png" data-caption="Import Presets by URL" />

### Using `lms` CLI
You can also use the CLI to import presets from URL. This is useful for sharing presets with others.

```
lms get {author}/{preset-name}
```

Example:
```bash
lms get neil/qwen3-thinking
```


### Find your config-presets directory

LM Studio manages config presets on disk. Presets are local and private by default. You or others can choose to share them by sharing the file.

Click on the `•••` button in the Preset dropdown and select "Reveal in Finder" (or "Show in Explorer" on Windows).
<img src="/assets/docs/preset-reveal-in-finder.png" data-caption="Reveal Preset in your local file system" />

This will download the preset file and automatically surface it in the preset dropdown in the app. 

### Where Hub shared presets are stored
Presets you share, and ones you download from the LM Studio Hub are saved in `~/.lmstudio/hub` on macOS and Linux, or `%USERPROFILE%\.lmstudio\hub` on Windows. 

### Publish Your Presets

> Publish your Presets to the LM Studio Hub. Share your Presets with the community or with your colleagues.


`Feature In Preview`

Starting LM Studio 0.3.15, you can publish your Presets to the LM Studio community. This allows you to share your Presets with others and import Presets from other users.

This feature is early and we would love to hear your feedback. Please report bugs and feedback to bugs@lmstudio.ai.

---

## Step 1: Click the Publish Button

Identify the Preset you want to publish in the Preset dropdown. Click the `•••` button and select "Publish" from the menu.

<img src="/assets/docs/preset-publish-new.png" data-caption="Click the Publish button to publish your Preset to the LM Studio Hub." />

## Step 2: Set the Preset Details

You will be prompted to set the details of your Preset. This includes the name (slug) and optional description. 

Community presets are public and can be used by anyone on the internet!

<img src="/assets/docs/preset-publish-details.png" data-caption="Set the details of your Preset before publishing." />

#### Privacy and Terms
For good measure, visit the [Privacy Policy](https://lmstudio.ai/hub-privacy) and [Terms of Service](https://lmstudio.ai/hub-terms) to understand what's suitable to share on the Hub, and how data is handled. Community presets are public and visible to everyone. Make sure you agree to what these documents say before publishing your Preset.

### Pull Updates

> How to pull the latest revisions of your Presets, or presets you have imported from others.

`Feature In Preview`

You can pull the latest revisions of your Presets, or presets you have imported from others. This is useful for keeping your Presets up to date with the latest changes.

<hr>

## How to Pull Updates
Click the `•••` button in the Preset dropdown and select "Pull" from the menu.

<img src="/assets/docs/preset-pull-latest.png" data-caption="Pull the latest revisions of your or imported Presets." />

## Your Presets vs Others'

Both your published Presets and other downloaded Presets can be pulled and updated the same way.

### Push New Revisions

> Publish new revisions of your Presets to the LM Studio Hub.


`Feature In Preview`

Starting LM Studio 0.3.15, you can publish your Presets to the LM Studio community. This allows you to share your Presets with others and import Presets from other users.

This feature is early and we would love to hear your feedback. Please report bugs and feedback to bugs@lmstudio.ai.

---

## Published Presets

Presets you share on the LM Studio Hub can be updated.

<img src="/assets/docs/preset-cloud-indicator.png" data-caption="Your shared Presets are marked with a cloud icon." />

## Step 1: Make Changes and Commit

Make any changes to your Preset, both in parameters that are already included in the Preset, or by adding new parameters.

## Step 2: Click the Push Button
Once changes are committed, you will see a `Push` button. Click it to push your changes to the Hub. 

Pushing changes will result in a new revision of your Preset on the Hub.

<img src="/assets/docs/preset-push-button.png" data-caption="Click the Push button to push your changes to the Hub." />


## advanced

### Speculative Decoding

> Speed up generation with a draft model


`Advanced`

Speculative decoding is a technique that can substantially increase the generation speed of large language models (LLMs) without reducing response quality.

<hr>

## What is Speculative Decoding

Speculative decoding relies on the collaboration of two models:

- A larger, "main" model
- A smaller, faster "draft" model

During generation, the draft model rapidly proposes potential tokens (subwords), which the main model can verify faster than it would take it to generate them from scratch. To maintain quality, the main model only accepts tokens that match what it would have generated. After the last accepted draft token, the main model always generates one additional token.

For a model to be used as a draft model, it must have the same "vocabulary" as the main model.

## How to enable Speculative Decoding

On `Power User` mode or higher, load a model, then select a `Draft Model` within the `Speculative Decoding` section of the chat sidebar:

<img src="/assets/docs/speculative-decoding-setting.png" style="width:80%; margin-top: 20px; border: 1px solid rgba(0,0,0,0.2);" data-caption="The Speculative Decoding section of the chat sidebar">

### Finding compatible draft models

You might see the following when you open the dropdown:

<img src="/assets/docs/speculative-decoding-no-compatible.png" style="width:40%; margin-top: 20px; border: 1px solid rgba(0,0,0,0.2);" data-caption="No compatible draft models">

Try to download a lower parameter variant of the model you have loaded, if it exists. If no smaller versions of your model exist, find a pairing that does.

For example:

<center style="margin: 20px;">

|          Main Model          |          Draft Model          |
| :--------------------------: | :---------------------------: |
|    Llama 3.1 8B Instruct     |     Llama 3.2 1B Instruct     |
|    Qwen 2.5 14B Instruct     |    Qwen 2.5 0.5B Instruct     |
| DeepSeek R1 Distill Qwen 32B | DeepSeek R1 Distill Qwen 1.5B |

</center>

Once you have both a main and draft model loaded, simply begin chatting to enable speculative decoding.

## Key factors affecting performance

Speculative decoding speed-up is generally dependent on two things:

1. How small and fast the _draft model_ is compared with the _main model_
2. How often the draft model is able to make "good" suggestions

In simple terms, you want to choose a draft model that's much smaller than the main model. And some prompts will work better than others.

### An important trade-off

Running a draft model alongside a main model to enable speculative decoding requires more **computation and resources** than running the main model on its own.

The key to faster generation of the main model is choosing a draft model that's both small and capable enough.

Here are general guidelines for the **maximum** draft model size you should select based on main model size (in parameters):

<center style="margin: 20px;">

| Main Model Size | Max Draft Model Size to Expect Speed-Ups |
| :-------------: | :--------------------------------------: |
|       3B        |                    -                     |
|       7B        |                    1B                    |
|       14B       |                    3B                    |
|       32B       |                    7B                    |

</center>

Generally, the larger the size difference is between the main model and the draft model, the greater the speed-up.

Note: if the draft model is not fast enough or effective enough at making "good" suggestions to the main model, the generation speed will not increase, and could actually decrease.

### Prompt dependent

One thing you will likely notice when using speculative decoding is that the generation speed is not consistent across all prompts.

The reason that the speed-up is not consistent across all prompts is because for some prompts, the draft model is less likely to make "good" suggestions to the main model.

Here are some extreme examples that illustrate this concept:

#### 1. Discrete Example: Mathematical Question

Prompt: "What is the quadratic equation formula?"

In this case, both a 70B model and a 0.5B model are both very likely to give the standard formula `x = (-b ± √(b² - 4ac))/(2a)`. So if the draft model suggested this formula as the next tokens, the target model would likely accept it, making this an ideal case for speculative decoding to work efficiently.

#### 2. Creative Example: Story Generation

Prompt: "Write a story that begins: 'The door creaked open...'"

In this case, the smaller model's draft tokens are likely be rejected more often by the larger model, as each next word could branch into countless valid possibilities.

While "4" is the only reasonable answer to "2+2", this story could continue with "revealing a monster", "as the wind howled", "and Sarah froze", or hundreds of other perfectly valid continuations, making the smaller model's specific word predictions much less likely to match the larger
model's choices.


### Import Models

> Use model files you've downloaded outside of LM Studio


You can use compatible models you've downloaded outside of LM Studio by placing them in the expected directory structure.

<hr>

### Use `lms import` (experimental)

To import a `GGUF` model you've downloaded outside of LM Studio, run the following command in your terminal:

```bash
lms import <path/to/model.gguf>
```

###### Follow the interactive prompt to complete the import process.

### LM Studio's expected models directory structure

<img src="/assets/docs/reveal-models-dir.png" style="width:80%" data-caption="Manage your models directory in the My Models tab">

LM Studio aims to preserves the directory structure of models downloaded from Hugging Face. The expected directory structure is as follows:

```xml
~/.lmstudio/models/
└── publisher/
    └── model/
        └── model-file.gguf
```

For example, if you have a model named `ocelot-v1` published by `infra-ai`, the structure would look like this:

```xml
~/.lmstudio/models/
└── infra-ai/
    └── ocelot-v1/
        └── ocelot-v1-instruct-q4_0.gguf
```

<hr>

### Community

Chat with other LM Studio users, discuss LLMs, hardware, and more on the [LM Studio Discord server](https://discord.gg/aPQfnNkxGC).


### Per-model Defaults

> You can set default settings for each model in LM Studio


`Advanced`

You can set default load settings for each model in LM Studio.

When the model is loaded anywhere in the app (including through [`lms load`](/docs/cli#load-a-model-with-options)) these settings will be used.

<hr>

### Setting default parameters for a model

Head to the My Models tab and click on the gear ⚙️ icon to edit the model's default parameters.

<img src="/assets/docs/model-settings-gear.png" style="width:80%" data-caption="Click on the gear icon to edit the default load settings for a model.">

This will open a dialog where you can set the default parameters for the model.

<video autoplay loop muted playsinline style="width:50%" data-caption="You can set the default parameters for a model in this dialog.">
  <source src="https://files.lmstudio.ai/default-params.mp4" type="video/mp4">
  Your browser does not support the video tag.
</video>

Next time you load the model, these settings will be used.


```lms_protip
#### Reasons to set default load parameters (not required, totally optional)

- Set a particular GPU offload settings for a given model
- Set a particular context size for a given model
- Whether or not to utilize Flash Attention for a given model

```




## Advanced Topics

### Changing load settings before loading a model

When you load a model, you can optionally change the default load settings.

<img src="/assets/docs/load-model.png" style="width:80%" data-caption="You can change the load settings before loading a model.">

### Saving your changes as the default settings for a model

If you make changes to load settings when you load a model, you can save them as the default settings for that model.

<img src="/assets/docs/save-load-changes.png" style="width:80%" data-caption="If you make changes to load settings when you load a model, you can save them as the default settings for that model.">


<hr>

### Community
Chat with other LM Studio power users, discuss configs, models, hardware, and more on the [LM Studio Discord server](https://discord.gg/aPQfnNkxGC).


### Prompt Template

> Optionally set or modify the model's prompt template


`Advanced`

By default, LM Studio will automatically configure the prompt template based on the model file's metadata. 

However, you can customize the prompt template for any model.

<hr>


### Overriding the Prompt Template for a Specific Model

Head over to the My Models tab and click on the gear ⚙️ icon to edit the model's default parameters.
###### Pro tip: you can jump to the My Models tab from anywhere by pressing `⌘` + `3` on Mac, or `ctrl` + `3` on Windows / Linux.

### Customize the Prompt Template

###### 💡 In most cases you don't need to change the prompt template

When a model doesn't come with a prompt template information, LM Studio will surface the `Prompt Template` config box in the **🧪 Advanced Configuration** sidebar.

<img src="/assets/docs/prompt-template.png" style="width:80%" data-caption="The Prompt Template config box in the chat sidebar">

You can make this config box always show up by right clicking the sidebar and selecting **Always Show Prompt Template**.

### Prompt template options

#### Jinja Template
You can express the prompt template in Jinja.

###### 💡 [Jinja](https://en.wikipedia.org/wiki/Jinja_(template_engine)) is a templating engine used to encode the prompt template in several popular LLM model file formats.

#### Manual

You can also express the prompt template manually by specifying message role prefixes and suffixes.

<hr>

#### Reasons you might want to edit the prompt template:
1. The model's metadata is incorrect, incomplete, or LM Studio doesn't recognize it
2. The model does not have a prompt template in its metadata (e.g. custom or older models)
3. You want to customize the prompt template for a specific use case

## user-interface

### LM Studio in your language

> LM Studio is available in English, Chinese, Spanish, French, German, Korean, Russian, and 26+ more languages.


LM Studio is available in `English`, `Spanish`, `Japanese`, `Chinese`, `German`, `Norwegian`, `Turkish`, `Russian`, `Korean`, `Polish`, `Vietnamese`, `Czech`, `Ukrainian`, `Portuguese (BR,PT)` and many more languages thanks to incredible  community localizers.

<hr>

### Selecting a Language

You can choose a language in the Settings tab.

Use the dropdown menu under Preferences > Language.

```lms_protip
You can jump to Settings from anywhere in the app by pressing `cmd` + `,` on macOS or `ctrl` + `,` on Windows/Linux.
```

###### To get to the Settings page, you need to be on [Power User mode](/docs/modes) or higher.

<hr>

#### Big thank you to community localizers 🙏

- Spanish [@xtianpaiva](https://github.com/xtianpaiva), [@AlexisGross](https://github.com/AlexisGross), [@Tonband](https://github.com/Tonband)
- Norwegian [@Exlo84](https://github.com/Exlo84)
- German [@marcelMaier](https://github.com/marcelMaier), [@Goekdeniz-Guelmez](https://github.com/Goekdeniz-Guelmez)
- Romanian (ro) [@alexandrughinea](https://github.com/alexandrughinea)
- Turkish (tr) [@progesor](https://github.com/progesor), [@nossbar](https://github.com/nossbar)
- Russian [@shelomitsky](https://github.com/shelomitsky), [@mlatysh](https://github.com/mlatysh), [@Adjacentai](https://github.com/Adjacentai), [@HostFly](https://github.com/HostFly), [@MotyaDev](https://github.com/MotyaDev), [@Autumn-Whisper](https://github.com/Autumn-Whisper), [@seropheem](https://github.com/seropheem)
- Korean [@williamjeong2](https://github.com/williamjeong2)
- Polish [@danieltechdev](https://github.com/danieltechdev)
- Czech [@ladislavsulc](https://github.com/ladislavsulc)
- Vietnamese [@trinhvanminh](https://github.com/trinhvanminh), [@godkyo98](https://github.com/godkyo98)
- Portuguese (BR) [@Sm1g00l](https://github.com/Sm1g00l), [@altiereslima](https://github.com/altiereslima)
- Portuguese (PT) [@catarino](https://github.com/catarino)
- Chinese (zh-CN) [@neotan](https://github.com/neotan), [@SweetDream0256](https://github.com/SweetDream0256), [@enKl03B](https://github.com/enKl03B), [@evansrrr](https://github.com/evansrrr), [@xkonglong](https://github.com/xkonglong), [@shadow01a](https://github.com/shadow01a)
- Chinese (zh-HK), (zh-TW) [@neotan](https://github.com/neotan), [ceshizhuanyong895](https://github.com/ceshizhuanyong895), [@BrassaiKao](https://github.com/BrassaiKao)
- Chinese (zh-Hant) [@kywarai](https://github.com/kywarai), [ceshizhuanyong895](https://github.com/ceshizhuanyong895)
- Ukrainian (uk) [@hmelenok](https://github.com/hmelenok)
- Japanese (ja) [@digitalsp](https://github.com/digitalsp)
- Dutch (nl) [@alaaf11](https://github.com/alaaf11)
- Italian (it) [@fralapo](https://github.com/fralapo), [@Bl4ck-D0g](https://github.com/Bl4ck-D0g), [@nikypalma](https://github.com/nikypalma)
- Indonesian (id) [@dwirx](https://github.com/dwirx)
- Greek (gr) [@ilikecatgirls](https://github.com/ilikecatgirls)
- Swedish (sv) [@reinew](https://github.com/reinew)
- Catalan (ca) [@Gopro3010](https://github.com/Gopro3010)
- French [@Plexi09](https://github.com/Plexi09)
- Finnish (fi) [@divergentti](https://github.com/divergentti)
- Bengali (bn) [@AbiruzzamanMolla](https://github.com/AbiruzzamanMolla)
- Malayalam (ml) [@prasanthc41m](https://github.com/prasanthc41m)
- Thai (th) [@gnoparus](https://github.com/gnoparus)
- Bosnian (bs) [@0haris0](https://github.com/0haris0)
- Bulgarian (bg) [@DenisZekiria](https://github.com/DenisZekiria)
- Hindi (hi) [@suhailtajshaik](https://github.com/suhailtajshaik)
- Hungarian (hu) [@Mekemoka](https://github.com/Mekemoka)
- Persian (Farsi) (fa) [@mohammad007kh](https://github.com/mohammad007kh), [@darwindev](https://github.com/darwindev)
- Arabic (ar) [@haqbany](https://github.com/haqbany)

Still under development (due to lack of RTL support in LM Studio)

- Hebrew: [@NHLOCAL](https://github.com/NHLOCAL)

#### Contributing to LM Studio localization

If you want to improve existing translations or contribute new ones, you're more than welcome to jump in.

LM Studio strings are maintained in https://github.com/lmstudio-ai/localization.

See instructions for contributing [here](https://github.com/lmstudio-ai/localization/blob/main/README.md).


### User, Power User, or Developer

> Hide or reveal advanced features


### Selecting a UI Mode

You can configure LM Studio to run in increasing levels of configurability.

Select between User, Power User, and Developer.

<img src="/assets/docs/modes.png" style="width: 500px; margin-top:30px" data-caption="Choose a mode at the bottom of the app" />

### Which mode should I choose?

#### `User`

Show only the chat interface, and auto-configure everything. This is the best choice for beginners or anyone who's happy with the default settings.

#### `Power User`

Use LM Studio in this mode if you want access to configurable [load](/docs/configuration/load) and [inference](/docs/configuration/inference) parameters as well as advanced chat features such as [insert, edit, &amp; continue](/docs/advanced/context) (for either role, user or assistant).

#### `Developer`

Full access to all aspects in LM Studio. This includes keyboard shortcuts and development features. Check out the Developer section under Settings for more.


### Color Themes

> Customize LM Studio's color theme


### Selecting a Theme

Press `Cmd` + `K` then `T` (macOS) or `Ctrl` + `K` then `T` (Windows/Linux) to open the theme selector.

You can also choose a theme in the Settings tab (`Cmd` + `,` on macOS or `Ctrl` + `,` on Windows/Linux).

Choosing the "Auto" option will automatically switch between Light and Dark themes based on your system settings.