by upstage
Open source · 351k downloads · 468 likes
Solar Open 100B is an advanced language model developed by Upstage, featuring 102 billion parameters and built on a Mixture-of-Experts (MoE) architecture. Fully trained from scratch on 19.7 trillion tokens, it excels in reasoning, instruction comprehension, and agentic capabilities while maintaining high transparency and customization tailored for the open-source community. Thanks to its MoE design, it balances the deep knowledge of a large model with the efficiency and fast inference speed of a more compact model, making it ideal for demanding professional applications. Available under the Upstage Solar license, it stands out for its flexibility, performance, and adaptability across diverse use cases, from data analysis to automating complex tasks. A quantized INT4 version is also offered to optimize deployment.
Solar Open is Upstage's flagship 102B-parameter large language model, trained entirely from scratch and released under the Upstage Solar License (see LICENSE for details). As a Mixture-of-Experts (MoE) architecture, it delivers enterprise-grade performance in reasoning, instruction-following, and agentic capabilities—all while prioritizing transparency and customization for the open-source community.
Technical Report | Project Page
nota-ai/Solar-Open-100B-NotaMoEQuant-Int4.Upstage/Solar-Open-100BFor more details, please refer to the Solar Open Technical Report.
This repository contains both model weights and code, which are licensed under different terms:
MODEL WEIGHTS (*.safetensors) Licensed under Upstage Solar License See: https://huggingface.co/upstage/Solar-Open-100B/blob/main/LICENSE
CODE (*.py, *.json, *.jinja files) Licensed under Apache License 2.0 See: https://www.apache.org/licenses/LICENSE-2.0
| Category | Benchmarks | Solar Open (102B) | gpt-oss-120b (117B, high) | gpt-oss-120b (117B, medium) | GLM-4.5-Air (110B) |
|---|---|---|---|---|---|
| General | KMMLU | 73.0 | 72.7 | 70.3 | 70.2 |
| KMMLU-Pro | 64.0 | 62.6 | 60.5 | 60.7 | |
| CLIcK | 78.9 | 77.2 | 72.9 | 48.3 | |
| HAE-RAE v1.1 | 73.3 | 70.8 | 69.6 | 42.6 | |
| KoBALT | 44.3 | 52.6 | 45.0 | 40.3 | |
| Finance | KBankMMLU (in-house) | 65.5 | 62.5 | 61.5 | 64.7 |
| Law | KBL | 65.5 | 62.8 | 60.1 | 60.6 |
| Medical | KorMedMCQA | 84.4 | 75.8 | 76.3 | 80.5 |
| Math | Ko-AIME 2024 (in-house) | 80.3 | 90.0 | 76.7 | 80.0 |
| Ko-AIME 2025 (in-house) | 80.0 | 90.0 | 70.0 | 83.3 | |
| HRM8K | 87.6 | 89.5 | 84.8 | 86.0 | |
| IF | Ko-IFEval | 87.5 | 93.2 | 86.7 | 79.5 |
| Preference | Ko Arena Hard v2 (in-house) | 79.9 | 79.5 | 73.8 | 60.4 |
| Category | Benchmarks | Solar Open (102B) | gpt-oss-120b (117B, high) | gpt-oss-120b (117B, medium) | GLM-4.5-Air (110B) |
|---|---|---|---|---|---|
| General | MMLU | 88.2 | 88.6 | 87.9 | 83.3 |
| MMLU-Pro | 80.4 | 80.4 | 78.6 | 81.4 | |
| GPQA-Diamond | 68.1 | 78.0 | 69.4 | 75.8 | |
| HLE (text only) | 10.5 | 18.4 | 7.23 | 10.8 | |
| Math | AIME 2024 | 91.7 | 94.3 | 77.7 | 88.7 |
| AIME 2025 | 84.3 | 91.7 | 75.0 | 82.7 | |
| HMMT 2025 (Feb) | 73.3 | 80.0 | 63.3 | 66.7 | |
| HMMT 2025 (Nov) | 80.0 | 73.3 | 66.7 | 70.0 | |
| Code | LiveCodeBench (v1–v6 cumul) | 74.2 | 89.9 | 82.8 | 71.9 |
| IF | IFBench | 53.7 | 70.8 | 61.2 | 37.8 |
| IFEval | 88.0 | 91.4 | 86.5 | 86.5 | |
| Preference | Arena Hard v2 | 74.8 | 79.6 | 72.7 | 62.5 |
| Writing Bench | 7.51 | 6.61 | 6.55 | 7.40 | |
| Agent | Tau² Airline | 52.4 | 56.0 | 52.8 | 60.8 |
| Tau² Telecom | 55.6 | 57.7 | 47.4 | 28.1 | |
| Tau² Retail | 59.3 | 76.5 | 68.4 | 71.9 | |
| Long | AA-LCR | 35.0 | 48.3 | 45.0 | 37.3 |
We recommend using the following generation parameters:
temperature=0.8
top_p=0.95
top_k=50
Install the required dependencies:
pip install -U "transformers>=5.0" kernels torch accelerate
Run inference with the following code:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL_ID = "upstage/Solar-Open-100B"
# Load model and tokenizer
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(
pretrained_model_name_or_path=MODEL_ID,
torch_dtype=torch.bfloat16,
device_map="auto",
)
# Prepare input
messages = [{"role": "user", "content": "who are you?"}]
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
return_tensors="pt",
)
inputs = inputs.to(model.device)
# Generate response
generated_ids = model.generate(
**inputs,
max_new_tokens=4096,
temperature=0.8,
top_p=0.95,
top_k=50,
do_sample=True,
)
generated_text = tokenizer.decode(generated_ids[0][inputs.input_ids.shape[1] :])
print(generated_text)
Docker is the recommended deployment method for running Solar-Open-100B.
# For 8 GPUs
docker run --gpus all \
--ipc=host \
-p 8000:8000 \
upstage/vllm-solar-open:latest \
upstage/Solar-Open-100B \
--trust-remote-code \
--enable-auto-tool-choice \
--tool-call-parser solar_open \
--reasoning-parser solar_open \
--logits-processors vllm.model_executor.models.parallel_tool_call_logits_processor:ParallelToolCallLogitsProcessor \
--logits-processors vllm.model_executor.models.solar_open_logits_processor:SolarOpenTemplateLogitsProcessor \
--tensor-parallel-size 8
For development, debugging, custom modifications or offline inference, Solar Open can also be run using a source installation of vLLM. We recommend using uv for environment management and dependency resolution.
Create and activate a Python virtual environment
uv venv --python 3.12 --seed
source .venv/bin/activate
Install Solar Open's optimized vLLM
VLLM_PRECOMPILED_WHEEL_LOCATION="https://github.com/vllm-project/vllm/releases/download/v0.12.0/vllm-0.12.0-cp38-abi3-manylinux_2_31_x86_64.whl" \
VLLM_USE_PRECOMPILED=1 \
uv pip install git+https://github.com/UpstageAI/[email protected]
Start the vLLM server (For 8 GPUs)
vllm serve upstage/Solar-Open-100B \
--trust-remote-code \
--enable-auto-tool-choice \
--tool-call-parser solar_open \
--reasoning-parser solar_open \
--logits-processors vllm.model_executor.models.parallel_tool_call_logits_processor:ParallelToolCallLogitsProcessor \
--logits-processors vllm.model_executor.models.solar_open_logits_processor:SolarOpenTemplateLogitsProcessor \
--tensor-parallel-size 8
If you use Solar Open in your research, please cite:
@article{park2025solar,
title={Solar Open Technical Report},
author={Sungrae Park and Sanghoon Kim and Jungho Cho and Gyoungjin Gim and Dawoon Jung and Mikyoung Cha and Eunhae Choo and Taekgyu Hong and Minbyul Jeong and SeHwan Joo and Minsoo Khang and Eunwon Kim and Minjeong Kim and Sujeong Kim and Yunsu Kim and Hyeonju Lee and Seunghyun Lee and Sukyung Lee and Siyoung Park and Gyungin Shin and Inseo Song and Wonho Song and Seonghoon Yang and Seungyoun Yi and Sanghoon Yoon and Jeonghyun Ko and Seyoung Song and Keunwoo Choi and Hwalsuk Lee and Sunghun Kim and Du-Seong Chang and Kyunghyun Cho and Junsuk Choe and Hwaran Lee and Jae-Gil Lee and KyungTae Lim and Alice Oh},
journal={arXiv preprint arXiv:2601.07022},
year={2025},
url={https://huggingface.co/papers/2601.07022}
}