diff --git a/.gitattributes b/.gitattributes
index 15ba2c6..93716b3 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -45,3 +45,133 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
+
+model-00122-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+merges.txt filter=lfs diff=lfs merge=lfs -text
+model-00004-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00006-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00005-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00002-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00009-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00015-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00007-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00008-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00000-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00010-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00016-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00017-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00019-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00014-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00012-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00011-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00020-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00022-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00013-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00023-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00018-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00025-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00031-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00024-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00033-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00026-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00030-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00029-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00032-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00034-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00039-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00035-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00041-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00028-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00038-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00040-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00043-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00044-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00037-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00047-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00045-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00046-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00049-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00048-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00053-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00036-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00050-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00054-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00055-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00051-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00052-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00042-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00059-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00063-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00056-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00057-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00062-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00060-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00058-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00067-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00064-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00073-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00066-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00068-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00071-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00069-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00077-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00070-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00076-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00078-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00079-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00081-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00074-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00083-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00075-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00085-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00087-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00082-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00084-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00080-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00091-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00088-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00093-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00095-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00089-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00090-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00097-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00094-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00096-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00001-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00101-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00092-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00103-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00099-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00105-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00098-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00102-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00003-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00104-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00021-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00111-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00110-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00108-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00027-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00119-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00113-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00115-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00109-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00114-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00107-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00100-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00112-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00116-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00118-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model.safetensors.index.json filter=lfs diff=lfs merge=lfs -text
+tokenizer.json filter=lfs diff=lfs merge=lfs -text
+vocab.json filter=lfs diff=lfs merge=lfs -text
+model-00117-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00121-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00124-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00120-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00123-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00065-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00061-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00072-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00086-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
+model-00106-of-00126.safetensors filter=lfs diff=lfs merge=lfs -text
\ No newline at end of file
diff --git a/README.md b/README.md
index cc3400d..ca1c75c 100644
--- a/README.md
+++ b/README.md
@@ -1,52 +1,246 @@
---
-frameworks:
-- Pytorch
-license: Apache License 2.0
-tags: []
-tasks:
-- text-generation
-
-#model-type:
-##如 gpt、phi、llama、chatglm、baichuan 等
-#- gpt
-
-#domain:
-##如 nlp、cv、audio、multi-modal
-#- nlp
-
-#language:
-##语言代码列表 https://help.aliyun.com/document_detail/215387.html?spm=a2c4g.11186623.0.0.9f8d7467kni6Aa
-#- cn
-
-#metrics:
-##如 CIDEr、Blue、ROUGE 等
-#- CIDEr
-
-#tags:
-##各种自定义,包括 pretrained、fine-tuned、instruction-tuned、RL-tuned 等训练方法和其他
-#- pretrained
-
-#tools:
-##如 vllm、fastchat、llamacpp、AdaSeq 等
-#- vllm
+pipeline_tag: text-generation
+license: other
+license_name: modified-mit
+license_link: https://github.com/MiniMax-AI/MiniMax-M2.5/blob/main/LICENSE
+library_name: transformers
---
-### 当前模型的贡献者未提供更加详细的模型介绍。模型文件和权重,可浏览“模型文件”页面获取。
-#### 您可以通过如下git clone命令,或者ModelScope SDK来下载模型
-SDK下载
-```bash
-#安装ModelScope
-pip install modelscope
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Today we're introducing our latest model, **MiniMax-M2.5**.
+
+Extensively trained with reinforcement learning in hundreds of thousands of complex real-world environments, M2.5 is **SOTA in coding, agentic tool use and search, office work, and a range of other economically valuable tasks**, boasting scores of **80.2% in SWE-Bench Verified, 51.3% in Multi-SWE-Bench, and 76.3% in BrowseComp** (with context management).
+
+Trained to reason efficiently and decompose tasks optimally, M2.5 exhibits tremendous speed in performing complicated agentic tasks, completing the SWE-Bench Verified evaluation **37% faster** than M2.1, matching the speed of **Claude Opus 4.6**.
+
+M2.5 is the first frontier model where users do not need to worry about cost, delivering on the promise of intelligence too cheap to meter. **It costs just $1 to run the model continuously for an hour at a rate of 100 tokens per second.** At 50 tokens per second, the cost drops to $0.30. We hope that the speed and cost effectiveness of M2.5 enable innovative new agentic applications.
+
+## Coding
+
+In programming evaluations, MiniMax-M2.5 saw substantial improvements compared to previous generations, reaching SOTA levels. The performance of M2.5 in multilingual tasks is especially pronounced.
+
+
+
+
+
+A significant improvement from previous generations is M2.5's ability to think and plan like an architect. The Spec-writing tendency of the model emerged during training: before writing any code, M2.5 actively decomposes and plans the features, structure, and UI design of the project from the perspective of an experienced software architect.
+
+M2.5 was trained on over 10 languages (including Go, C, C++, TypeScript, Rust, Kotlin, Python, Java, JavaScript, PHP, Lua, Dart, and Ruby) across more than 200,000 real-world environments. Going far beyond bug-fixing, M2.5 delivers reliable performance across the entire development lifecycle of complex systems: from 0-to-1 system design and environment setup, to 1-to-10 system development, to 10-to-90 feature iteration, and finally 90-to-100 comprehensive code review and system testing. It covers full-stack projects spanning multiple platforms including Web, Android, iOS, and Windows, encompassing server-side APIs, business logic, databases, and more, not just frontend webpage demos.
+
+To evaluate these capabilities, we also upgraded the VIBE benchmark to a more complex and challenging Pro version, significantly increasing task complexity, domain coverage, and evaluation accuracy. Overall, M2.5 performs on par with Opus 4.5.
+
+
+
+
+
+We focused on the model's ability to generalize across out-of-distribution harnesses. We tested performance on the SWE-Bench Verified evaluation set using different coding agent harnesses.
+- On Droid: 79.7(M2.5) > 78.9(Opus 4.6)
+- On OpenCode: 76.1(M2.5) > 75.9(Opus 4.6)
+
+## Search and Tool calling
+
+
+
+
+
+Effective tool calling and search are prerequisites for a model's ability to autonomously handle more complex tasks. In evaluations on benchmarks such as BrowseComp and Wide Search, M2.5 achieved industry-leading performance. At the same time, the model's generalization has also improved — M2.5 demonstrates more stable performance when facing unfamiliar scaffolding environments.
+
+In research tasks performed by professional human experts, using a search engine is only a small part of the process; most of the work involves deep exploration across information-dense webpages. To address this, we built RISE (Realistic Interactive Search Evaluation) to measure a model's search capabilities on real-world professional tasks. The results show that M2.5 excels at expert-level search tasks in real-world settings.
+
+Compared to its predecessors, M2.5 also demonstrates much better decision-making when handling agentic tasks: it has learned to solve problems with more precise search rounds and better token efficiency. For example, across multiple agentic tasks including BrowseComp, Wide Search, and RISE, M2.5 achieved better results with fewer rounds, using approximately 20% fewer rounds compared to M2.1. This indicates that the model is no longer just getting the answer right, but is also reasoning towards results in more efficient paths.
+
+## Office work
+
+M2.5 was trained to produce truly deliverable outputs in office scenarios. To this end, we engaged in thorough collaboration with senior professionals in fields such as finance, law, and social sciences. They designed requirements, provided feedback, participated in defining standards, and directly contributed to data construction, bringing the tacit knowledge of their industries into the model's training pipeline. Based on this foundation, M2.5 has achieved significant capability improvements in high-value workspace scenarios such as Word, PowerPoint, and Excel financial modeling. On the evaluation side, we built an internal Cowork Agent evaluation framework (GDPval-MM) that assesses both the quality of the deliverable and the professionalism of the agent's trajectory through pairwise comparisons, while also monitoring token costs across the entire workflow to estimate the model's real-world productivity gains. In comparisons against other mainstream models, it achieved an average win rate of 59.0%.
+
+
+
+
+
+## Efficiency
+
+Because the real world is full of deadlines and time constraints, task completion speed is a practical necessity. The time it takes a model to complete a task depends on its task decomposition effectiveness, token efficiency, and inference speed. M2.5 is served natively at a rate of 100 tokens per second, which is nearly twice that of other frontier models. Further, our reinforcement learning setup incentivizes the model to reason efficiently and break down tasks optimally. Due to these three factors, M2.5 delivers a significant time savings in complex task completion.
+
+For example, when running SWE-Bench Verified, M2.5 consumed an average of 3.52 million tokens per task. In comparison, M2.1 consumed 3.72M tokens. Meanwhile, thanks to improvements in capabilities such as parallel tool calling, the end-to-end runtime decreased from an average of 31.3 minutes to 22.8 minutes, representing a 37% speed improvement. This runtime is on par with Claude Opus 4.6's 22.9 minutes, while the total cost per task is only 10% that of Claude Opus 4.6.
+
+## Cost
+
+Our goal in designing the M2-series of foundation models is to power complex agents without having to worry about cost. We believe that M2.5 is close to realizing this goal. We’re releasing two versions of the model, M2.5 and M2.5-Lightning, that are identical in capability but differ in speed. M2.5-Lightning has a steady throughput of 100 tokens per second, which is two times faster than other frontier models, and costs $0.3 per million input tokens and $2.4 per million output tokens. M2.5, which has a throughput of 50 tokens per second, costs half that. Both model versions support caching. Based on output price, the cost of M2.5 is one-tenth to one-twentieth that of Opus, Gemini 3 Pro, and GPT-5.
+
+At a rate of 100 output tokens per second, running M2.5 continuously for an hour costs $1. At a rate of 50 TPS, the price drops to $0.3. To put that into perspective, you can have four M2.5 instances running continuously for an entire year for $10,000. We believe that M2.5 provides virtually limitless possibilities for the development and operation of agents in the economy. For the M2-series, the only problem that remains is how to continually push the frontier of model capability.
+
+## Improvement Rate
+
+Over the three and a half months from late October to now, we have successively released M2, M2.1, and M2.5, with the pace of model improvement exceeding our original expectations. For instance, in the highly-regarded SWE-Bench Verified benchmark, the rate of progress of the M2-series has been significantly faster than that of peers such as the Claude, GPT, and Gemini model families.
+
+
+
+
+
+## RL Scaling
+
+One of the key drivers of the aforementioned developments is the scaling of reinforcement learning. As we train our models, we also benefit from their abilities. Most of the tasks and workspaces that we perform in our company have been made into training environments for RL. To date, there are already hundreds of thousands of such environments. At the same time, we did plenty of work on our agentic RL framework, algorithms, reward signals, and infrastructure engineering to support the continued scaling of our RL training.
+
+### Forge –– Agent-Native RL Framework
+
+We designed an agent-native RL framework in-house, called Forge, which introduces an intermediary layer that fully decouples the underlying training-inference engine from the agent, supporting the integration of arbitrary agents and enabling us to optimize the model's generalization across agent scaffolds and tools. To improve system throughput, we optimized asynchronous scheduling strategies to balance system throughput against sample off-policyness, and designed a tree-structured merging strategy for training samples, achieving approximately 40x training speedup.
+
+
+
+
+
+### Agentic RL Algorithm and Reward Design
+
+On the algorithm side, we continued using the CISPO algorithm we proposed at the beginning of last year to ensure the stability of MoE models during large-scale training. To address the credit assignment challenge posed by long contexts in agent rollouts, we introduced a process reward mechanism for end-to-end monitoring of generation quality. Furthermore, to deeply align with user experience, we evaluated task completion time through agent trajectories, achieving an optimal trade-off between model intelligence and response speed.
+
+
+
+
+
+We will release a more comprehensive introduction to RL scaling soon in a separate technical blogpost.
+
+## MiniMax Agent: M2.5 as a Professional Employee
+
+M2.5 has been fully deployed in MiniMax Agent, delivering the best agentic experience.
+
+We have distilled core information-processing capabilities into standardized Office Skills deeply integrated within MiniMax Agent. In MAX mode, when handling tasks such as Word formatting, PowerPoint editing, and Excel calculations, MiniMax Agent automatically loads the corresponding Office Skills based on file type, improving the quality of task outputs.
+
+Furthermore, users can combine Office Skills with domain-specific industry expertise to create reusable Experts tailored to specific task scenarios.
+
+Take industry research as an example: by merging a mature research framework SOP (standard operating procedure) with Word Skills, the Agent can strictly follow the established framework to automatically fetch data, organize analytical logic, and output properly formatted research reports — rather than merely generating a raw block of text. In financial modeling scenarios, by combining an organization's proprietary modeling standards with Excel Skills, the Agent can follow specific risk control logic and calculation standards to automatically generate and validate complex financial models, rather than simply outputting a basic spreadsheet.
+
+To date, users have built over 10,000 Experts on MiniMax Agent, and this number is still growing rapidly. MiniMax has also built multiple sets of deeply optimized, ready-to-use Expert suites on MiniMax Agent for high-frequency scenarios such as office work, finance, and programming.
+
+MiniMax itself has been among the first to benefit from M2.5's capabilities. Throughout the company's daily operations, 30% of overall tasks are autonomously completed by M2.5, spanning functions including R&D, product, sales, HR, and finance — and the penetration rate continues to rise. Performance in coding scenarios has been particularly notable, with M2.5-generated code accounting for 80% of newly committed code.
+
+## How to Use
+
+MiniMax Agent: https://agent.minimax.io/
+
+MiniMax API Platform: https://platform.minimax.io/
+
+MiniMax Coding Plan: https://platform.minimax.io/subscribe/coding-plan
+
+## Local Deployment Guide
+
+Download the model from HuggingFace repository: https://huggingface.co/MiniMaxAI/MiniMax-M2.5
+
+We recommend using the following inference frameworks (listed alphabetically) to serve the model:
+
+### SGLang
+
+We recommend using [SGLang](https://docs.sglang.io/) to serve MiniMax-M2.5. Please refer to our [SGLang Deployment Guide](./docs/sglang_deploy_guide.md).
+
+### vLLM
+
+We recommend using [vLLM](https://github.com/vllm-project/vllm) to serve MiniMax-M2.5. Please refer to our [vLLM Deployment Guide](./docs/vllm_deploy_guide.md).
+
+### Transformers
+
+We recommend using [Transformers](https://github.com/huggingface/transformers) to serve MiniMax-M2.5. Please refer to our [Transformers Deployment Guide](./docs/transformers_deploy_guide.md).
+
+### Inference Parameters
+
+We recommend using the following parameters for best performance: `temperature=1.0`, `top_p = 0.95`, `top_k = 40`. Default system prompt:
+
```
-```python
-#SDK模型下载
-from modelscope import snapshot_download
-model_dir = snapshot_download('MiniMax/MiniMax-M2.5')
-```
-Git下载
-```
-#Git模型下载
-git clone https://www.modelscope.cn/MiniMax/MiniMax-M2.5.git
+You are a helpful assistant. Your name is MiniMax-M2.5 and is built by MiniMax.
```
-如果您是本模型的贡献者,我们邀请您根据模型贡献文档 ,及时完善模型卡片内容。
\ No newline at end of file
+## Tool Calling Guide
+
+Please refer to our [Tool Calling Guide](./docs/tool_calling_guide.md).
+
+## Contact Us
+
+Contact us at [model@minimax.io](mailto:model@minimax.io).
+
+
+## Appendix
+
+Further benchmark results of M2.5:
+
+| Benchmark | MiniMax-M2.5 | MiniMax-M2.1 | Claude Sonnet 4.5 | Claude Opus 4.5 | Claude Opus 4.6 | Gemini 3 Pro | GPT-5.2 (thinking) |
+|---|---|---|---|---|---|---|---|
+| AIME25 | 86.3 | 83.0 | 88.0 | 91.0 | 95.6 | 96.0 | 98.0 |
+| GPQA-D | 85.2 | 83.0 | 83.0 | 87.0 | 90.0 | 91.0 | 90.0 |
+| HLE w/o tools | 19.4 | 22.2 | 17.3 | 28.4 | 30.7 | 37.2 | 31.4 |
+| SciCode | 44.4 | 41.0 | 45.0 | 50.0 | 52.0 | 56.0 | 52.0 |
+| IFBench | 70.0 | 70.0 | 57.0 | 58.0 | 53.0 | 70.0 | 75.0 |
+| AA-LCR | 69.5 | 62.0 | 66.0 | 74.0 | 71.0 | 71.0 | 73.0 |
+
+Evaluation methods:
+> - SWE benchmark: SWE-bench Verified, SWE-bench Multilingual, SWE-bench-pro, and Multi-SWE-bench were tested on internal infrastructure using Claude Code as the scaffolding, with the default system prompt overridden, and results averaged over 4 runs. Additionally, SWE-bench Verified was also evaluated on the Droid and Opencode scaffoldings using the default prompt.
+> - Terminal Bench 2: We tested Terminal Bench 2 using Claude Code 2.0.64 as the evaluation scaffolding. We modified the Dockerfiles of some problems to ensure the correctness of the problems themselves, uniformly expanded sandbox specifications to 8-core CPU and 16 GB memory, set the timeout uniformly to 7,200 seconds, and equipped each problem with a basic toolset (ps, curl, git, etc.). While not retrying on timeouts, we added a detection mechanism for empty scaffolding responses, retrying tasks whose final response was empty to handle various abnormal interruption scenarios. Final results are averaged over 4 runs.
+> - VIBE-Pro: Internal benchmark. Uses Claude Code as the scaffolding to automatically verify the interaction logic and visual effects of programs. All scores are computed through a unified pipeline that includes a requirements set, containerized deployment, and a dynamic interaction environment. Final results are averaged over 3 runs.
+> - BrowseComp: Uses the same agent framework as WebExplorer (Liu et al., 2025). When token usage exceeds 30% of the maximum context, all history is discarded.
+> - Wide Search: Uses the same agent framework as WebExplorer (Liu et al., 2025).
+> - RISE: Internal benchmark. Contains real questions from human experts, evaluating the model's multi-step information retrieval and reasoning capabilities when combined with complex web interactions. A Playwright-based browser tool suite is added on top of the WebExplorer (Liu et al., 2025) agent framework.
+> - GDPval-MM: Internal benchmark. Based on the open-source GDPval test set, using a custom agentic evaluation framework where an LLM-as-a-judge performs pairwise win/tie/loss judgments on complete trajectories. Average token cost per task is calculated based on each vendor's official API pricing (without caching).
+> - MEWC: Internal benchmark. Built on MEWC (Microsoft Excel World Championship), comprising 179 problems from the main and other regional divisions of Excel esports competitions from 2021–2026. It evaluates the model's ability to understand competition Excel spreadsheets and use Excel tools to complete problems. Scores are calculated by comparing output and answer cell values one by one.
+> - Finance Modeling: Internal benchmark. Primarily contains financial modeling problems constructed by industry experts, involving end-to-end research and analysis tasks performed via Excel tools. Each problem is scored using expert-designed rubrics. Final results are averaged over 3 runs.
+> - AIME25 ~ AA-LCR: Obtained through internal testing based on the public evaluation sets and evaluation methods covered by the Artificial Analysis Intelligence Index leaderboard.
diff --git a/chat_template.jinja b/chat_template.jinja
new file mode 100644
index 0000000..4623080
--- /dev/null
+++ b/chat_template.jinja
@@ -0,0 +1,159 @@
+{# ----------‑‑‑ special token variables ‑‑‑---------- #}
+{%- set toolcall_begin_token = '' -%}
+{%- set toolcall_end_token = ' ' -%}
+{#- Tool Rendering Functions ============================================== -#}
+{%- macro render_tool_namespace(namespace_name, tool_list) -%}
+{%- for tool in tool_list -%}
+{{ tool.function | tojson(ensure_ascii=False) }}
+{% endfor -%}
+{%- endmacro -%}
+{%- macro visible_text(content) -%}
+ {%- if content is string -%}
+ {{ content }}
+ {%- elif content is iterable and content is not mapping -%}
+ {%- for item in content -%}
+ {%- if item is mapping and item.type == 'text' -%}
+ {{- item.text }}
+ {%- elif item is string -%}
+ {{- item }}
+ {%- endif -%}
+ {%- endfor -%}
+ {%- else -%}
+ {{- content }}
+ {%- endif -%}
+{%- endmacro -%}
+{#- System Message Construction ============================================ -#}
+{%- macro build_system_message(system_message) -%}
+ {%- if system_message and system_message.content -%}
+ {{- visible_text(system_message.content) }}
+ {%- else -%}
+ {%- if model_identity is not defined -%}
+ {%- set model_identity = "You are a helpful assistant. Your name is MiniMax-M2.5 and is built by MiniMax." -%}
+ {%- endif -%}
+ {{- model_identity }}
+ {%- endif -%}
+
+ {#- Handle current_date -#}
+ {%- if system_message and system_message.current_date -%}
+ {{- '\n' ~ 'Current date: ' + system_message.current_date }}
+ {%- endif -%}
+ {#- Handle current_location -#}
+ {%- if system_message and system_message.current_location -%}
+ {{- '\n' ~ 'Current location: ' + system_message.current_location }}
+ {%- endif -%}
+{%- endmacro -%}
+{#- Main Template Logic ================================================= -#}
+{#- Extract system message (only first message if it's system) -#}
+{%- set system_message = none -%}
+{%- set conversation_messages = messages -%}
+{%- if messages and messages[0].role == "system" -%}
+ {%- set system_message = messages[0] -%}
+ {%- set conversation_messages = messages[1:] -%}
+{%- endif -%}
+{#- Get the last user message turn, for interleved thinking -#}
+{%- set ns = namespace(last_user_index=-1) %}
+{% for m in conversation_messages %}
+ {%- if m.role == 'user' %}
+ {% set ns.last_user_index = loop.index0 -%}
+ {%- endif %}
+{%- endfor %}
+{#- Render system message -#}
+{{- ']~!b[' ~ ']~b]system' ~ '\n' }}
+{{- build_system_message(system_message) }}
+{#- Render tools if available -#}
+{%- if tools -%}
+ {{- '\n\n' ~ '# Tools' ~ '\n' ~ 'You may call one or more tools to assist with the user query.\nHere are the tools available in JSONSchema format:' ~ '\n' }}
+ {{- '\n' ~ '' ~ '\n' }}
+ {{- render_tool_namespace("functions", tools) }}
+ {{- ' ' ~ '\n\n' }}
+{{- 'When making tool calls, use XML format to invoke tools and pass parameters:' ~ '\n' }}
+{{- '\n' ~ toolcall_begin_token }}
+
+param-value-1
+param-value-2
+...
+
+{{- '\n' ~ toolcall_end_token }}
+{%- endif -%}
+{{- '[e~[\n' }}
+
+{#- Render messages -#}
+{%- set last_tool_call = namespace(name=none) -%}
+{%- for message in conversation_messages -%}
+ {%- if message.role == 'assistant' -%}
+ {#- Only render reasoning_content if no user message follows -#}
+ {{- ']~b]ai' ~ '\n' }}
+
+ {%- set reasoning_content = '' %}
+ {%- set content = visible_text(message.content) %}
+ {%- if message.reasoning_content is string %}
+ {%- set reasoning_content = message.reasoning_content %}
+ {%- else %}
+ {%- if '' in content %}
+ {%- set reasoning_content = content.split('')[0].strip('\n').split('')[-1].strip('\n') %}
+ {%- set content = content.split(' ')[-1].strip('\n') %}
+ {%- endif %}
+ {%- endif %}
+ {%- if reasoning_content and loop.index0 > ns.last_user_index -%}
+ {{- '' ~ '\n' ~ reasoning_content ~ '\n' ~ ' ' ~ '\n\n' }}
+ {%- endif -%}
+ {%- if content -%}
+ {{- content }}
+ {%- endif -%}
+ {%- if message.tool_calls -%}
+ {{- '\n' ~ toolcall_begin_token ~ '\n' }}
+
+ {%- for tool_call in message.tool_calls -%}
+ {%- if tool_call.function %}
+ {%- set tool_call = tool_call.function %}
+ {%- endif %}
+ {{- '' }}
+ {% set _args = tool_call.arguments %}
+ {%- for k, v in _args.items() %}
+ {{- '' }}
+ {{- v | tojson(ensure_ascii=False) if v is not string else v }}
+ {{- ' ' }}
+ {% endfor %}
+ {{- ' ' ~ '\n' }}
+ {%- endfor -%}
+
+ {{- toolcall_end_token}}
+ {%- set last_tool_call.name = message.tool_calls[-1].name -%}
+ {%- else -%}
+ {%- set last_tool_call.name = none -%}
+ {%- endif -%}
+ {{- '[e~[' ~ '\n' }}
+
+ {%- elif message.role == 'tool' -%}
+ {%- if last_tool_call.name is none -%}
+ {{- raise_exception("Message has tool role, but there was no previous assistant message with a tool call!") }}
+ {%- endif -%}
+ {%- if loop.first or (conversation_messages[loop.index0 - 1].role != 'tool') -%}
+ {{- ']~b]tool' }}
+ {%- endif -%}
+ {%- if message.content is string -%}
+ {{- '\n' }}
+ {{- message.content }}
+ {{- ' ' }}
+ {%- else -%}
+ {%- for tr in message.content -%}
+ {{- '\n' }}
+ {{- tr.output if tr.output is defined else (tr.text if tr.type == 'text' and tr.text is defined else tr) }}
+ {{- '\n ' }}
+ {%- endfor -%}
+ {%- endif -%}
+ {%- if loop.last or (conversation_messages[loop.index0 + 1].role != 'tool') -%}
+ {{- '[e~[\n' -}}
+ {%- endif -%}
+
+ {%- elif message.role == 'user' -%}
+ {{- ']~b]user' ~ '\n' }}
+ {{- visible_text(message.content) }}
+ {{- '[e~[' ~ '\n' }}
+ {%- endif -%}
+{%- endfor -%}
+
+{#- Generation prompt -#}
+{%- if add_generation_prompt -%}
+{{- ']~b]ai' ~ '\n' ~ '' ~ '\n' }}
+{%- endif -%}
diff --git a/config.json b/config.json
new file mode 100644
index 0000000..f300c2e
--- /dev/null
+++ b/config.json
@@ -0,0 +1,113 @@
+{
+ "architectures": [
+ "MiniMaxM2ForCausalLM"
+ ],
+ "attn_type_list": [
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ "auto_map": {
+ "AutoConfig": "configuration_minimax_m2.MiniMaxM2Config",
+ "AutoModelForCausalLM": "modeling_minimax_m2.MiniMaxM2ForCausalLM"
+ },
+ "head_dim": 128,
+ "hidden_act": "silu",
+ "hidden_size": 3072,
+ "intermediate_size": 1536,
+ "max_position_embeddings": 196608,
+ "model_type": "minimax_m2",
+ "mtp_transformer_layers": 1,
+ "num_attention_heads": 48,
+ "num_experts_per_tok": 8,
+ "num_hidden_layers": 62,
+ "num_key_value_heads": 8,
+ "num_local_experts": 256,
+ "num_mtp_modules": 3,
+ "qk_norm_type": "per_layer",
+ "quantization_config": {
+ "activation_scheme": "dynamic",
+ "fmt": "float8_e4m3fn",
+ "quant_method": "fp8",
+ "weight_block_size": [
+ 128,
+ 128
+ ],
+ "modules_to_not_convert": [
+ "gate",
+ "e_score_correction_bias",
+ "lm_head"
+ ]
+ },
+ "rms_norm_eps": 1e-06,
+ "rope_theta": 5000000,
+ "rotary_dim": 64,
+ "scoring_func": "sigmoid",
+ "shared_intermediate_size": 0,
+ "tie_word_embeddings": false,
+ "transformers_version": "4.46.1",
+ "use_cache": true,
+ "use_mtp": true,
+ "use_qk_norm": true,
+ "use_routing_bias": true,
+ "vocab_size": 200064
+}
diff --git a/configuration_minimax_m2.py b/configuration_minimax_m2.py
new file mode 100644
index 0000000..7fcd986
--- /dev/null
+++ b/configuration_minimax_m2.py
@@ -0,0 +1,200 @@
+# 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
+# This file was automatically generated from src/transformers/models/minimax_m2/modular_minimax_m2.py.
+# Do NOT edit this file manually as any edits will be overwritten by the generation of
+# the file from the modular. If any change should be done, please apply the change to the
+# modular_minimax_m2.py file directly. One of our CI enforces this.
+# 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
+# coding=utf-8
+# Copyright 2025 the HuggingFace Team. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+from transformers.configuration_utils import PretrainedConfig
+
+
+class MiniMaxM2Config(PretrainedConfig):
+ r"""
+ This is the configuration class to store the configuration of a [`MiniMaxM2Model`]. It is used to instantiate an
+ MiniMaxM2 model according to the specified arguments, defining the model architecture. Instantiating a configuration
+ with the defaults will yield a similar configuration to that of the MiniMaxM2-7B-v0.1 or MiniMaxM2-7B-Instruct-v0.1.
+
+ [minimax_m2ai/MiniMaxM2-8x7B](https://huggingface.co/minimax_m2ai/MiniMaxM2-8x7B)
+ [minimax_m2ai/MiniMaxM2-7B-Instruct-v0.1](https://huggingface.co/minimax_m2ai/MiniMaxM2-7B-Instruct-v0.1)
+
+ Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
+ documentation from [`PretrainedConfig`] for more information.
+
+
+ Args:
+ vocab_size (`int`, *optional*, defaults to 32000):
+ Vocabulary size of the MiniMaxM2 model. Defines the number of different tokens that can be represented by the
+ `inputs_ids` passed when calling [`MiniMaxM2Model`]
+ hidden_size (`int`, *optional*, defaults to 4096):
+ Dimension of the hidden representations.
+ intermediate_size (`int`, *optional*, defaults to 14336):
+ Dimension of the MLP representations.
+ num_hidden_layers (`int`, *optional*, defaults to 32):
+ Number of hidden layers in the Transformer encoder.
+ num_attention_heads (`int`, *optional*, defaults to 32):
+ Number of attention heads for each attention layer in the Transformer encoder.
+ num_key_value_heads (`int`, *optional*, defaults to 8):
+ This is the number of key_value heads that should be used to implement Grouped Query Attention. If
+ `num_key_value_heads=num_attention_heads`, the model will use Multi Head Attention (MHA), if
+ `num_key_value_heads=1` the model will use Multi Query Attention (MQA) otherwise GQA is used. When
+ converting a multi-head checkpoint to a GQA checkpoint, each group key and value head should be constructed
+ by meanpooling all the original heads within that group. For more details, check out [this
+ paper](https://huggingface.co/papers/2305.13245). If it is not specified, will default to `8`.
+ head_dim (`int`, *optional*, defaults to `hidden_size // num_attention_heads`):
+ The attention head dimension.
+ hidden_act (`str` or `function`, *optional*, defaults to `"silu"`):
+ The non-linear activation function (function or string) in the decoder.
+ max_position_embeddings (`int`, *optional*, defaults to `4096*32`):
+ The maximum sequence length that this model might ever be used with. MiniMaxM2's sliding window attention
+ allows sequence of up to 4096*32 tokens.
+ initializer_range (`float`, *optional*, defaults to 0.02):
+ The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
+ rms_norm_eps (`float`, *optional*, defaults to 1e-05):
+ The epsilon used by the rms normalization layers.
+ use_cache (`bool`, *optional*, defaults to `True`):
+ Whether or not the model should return the last key/values attentions (not used by all models). Only
+ relevant if `config.is_decoder=True`.
+ pad_token_id (`int`, *optional*):
+ The id of the padding token.
+ bos_token_id (`int`, *optional*, defaults to 1):
+ The id of the "beginning-of-sequence" token.
+ eos_token_id (`int`, *optional*, defaults to 2):
+ The id of the "end-of-sequence" token.
+ tie_word_embeddings (`bool`, *optional*, defaults to `False`):
+ Whether the model's input and output word embeddings should be tied.
+ rope_theta (`float`, *optional*, defaults to 1000000.0):
+ The base period of the RoPE embeddings.
+ sliding_window (`int`, *optional*):
+ Sliding window attention window size. If not specified, will default to `4096`.
+ attention_dropout (`float`, *optional*, defaults to 0.0):
+ The dropout ratio for the attention probabilities.
+ num_experts_per_tok (`int`, *optional*, defaults to 2):
+ The number of experts to route per-token, can be also interpreted as the `top-k` routing
+ parameter
+ num_local_experts (`int`, *optional*, defaults to 8):
+ Number of experts per Sparse MLP layer.
+ output_router_logits (`bool`, *optional*, defaults to `False`):
+ Whether or not the router logits should be returned by the model. Enabling this will also
+ allow the model to output the auxiliary loss. See [here]() for more details
+ router_aux_loss_coef (`float`, *optional*, defaults to 0.001):
+ The aux loss factor for the total loss.
+ router_jitter_noise (`float`, *optional*, defaults to 0.0):
+ Amount of noise to add to the router.
+
+ ```python
+ >>> from transformers import MiniMaxM2Model, MiniMaxM2Config
+
+ >>> # Initializing a MiniMaxM2 7B style configuration
+ >>> configuration = MiniMaxM2Config()
+
+ >>> # Initializing a model from the MiniMaxM2 7B style configuration
+ >>> model = MiniMaxM2Model(configuration)
+
+ >>> # Accessing the model configuration
+ >>> configuration = model.config
+ ```"""
+
+ model_type = "minimax_m2"
+ keys_to_ignore_at_inference = ["past_key_values"]
+ base_model_tp_plan = {
+ "layers.*.self_attn.q_proj": "colwise",
+ "layers.*.self_attn.k_proj": "colwise",
+ "layers.*.self_attn.v_proj": "colwise",
+ "layers.*.self_attn.o_proj": "rowwise",
+ "layers.*.block_sparse_moe.gate": "colwise_rep", # we need to replicate here to correctly route experts
+ "layers.*.block_sparse_moe.experts.*.w1": "colwise",
+ "layers.*.block_sparse_moe.experts.*.w2": "rowwise",
+ "layers.*.block_sparse_moe.experts.*.w3": "colwise",
+ }
+ base_model_pp_plan = {
+ "embed_tokens": (["input_ids"], ["inputs_embeds"]),
+ "layers": (["hidden_states", "attention_mask"], ["hidden_states"]),
+ "norm": (["hidden_states"], ["hidden_states"]),
+ }
+
+ def __init__(
+ self,
+ vocab_size=32000,
+ hidden_size=4096,
+ intermediate_size=14336,
+ num_hidden_layers=32,
+ num_attention_heads=32,
+ num_key_value_heads=8,
+ head_dim=None,
+ hidden_act="silu",
+ max_position_embeddings=4096 * 32,
+ initializer_range=0.02,
+ rms_norm_eps=1e-5,
+ use_cache=True,
+ pad_token_id=None,
+ bos_token_id=1,
+ eos_token_id=2,
+ tie_word_embeddings=False,
+ rope_theta=1e6,
+ sliding_window=None,
+ attention_dropout=0.0,
+ num_experts_per_tok=2,
+ num_local_experts=8,
+ output_router_logits=False,
+ router_aux_loss_coef=0.001,
+ router_jitter_noise=0.0,
+ **kwargs,
+ ):
+ self.vocab_size = vocab_size
+ self.max_position_embeddings = max_position_embeddings
+ self.hidden_size = hidden_size
+ self.intermediate_size = intermediate_size
+ self.num_hidden_layers = num_hidden_layers
+ self.num_attention_heads = num_attention_heads
+ self.sliding_window = sliding_window
+
+ # for backward compatibility
+ if num_key_value_heads is None:
+ num_key_value_heads = num_attention_heads
+
+ self.num_key_value_heads = num_key_value_heads
+ self.hidden_act = hidden_act
+ self.initializer_range = initializer_range
+ self.rms_norm_eps = rms_norm_eps
+ self.use_cache = use_cache
+ self.rope_theta = rope_theta
+ self.attention_dropout = attention_dropout
+ self.head_dim = head_dim
+
+ self.num_experts_per_tok = num_experts_per_tok
+ self.num_local_experts = num_local_experts
+ self.output_router_logits = output_router_logits
+ self.router_aux_loss_coef = router_aux_loss_coef
+ self.router_jitter_noise = router_jitter_noise
+
+ self.use_qk_norm = kwargs.pop("use_qk_norm", False)
+ self.rotary_dim = kwargs.pop("rotary_dim", self.head_dim)
+ self.partial_rotary_factor = kwargs.pop("partial_rotary_factor", 1)
+ if self.head_dim is not None:
+ self.partial_rotary_factor = self.rotary_dim / self.head_dim
+
+ super().__init__(
+ pad_token_id=pad_token_id,
+ bos_token_id=bos_token_id,
+ eos_token_id=eos_token_id,
+ tie_word_embeddings=tie_word_embeddings,
+ **kwargs,
+ )
+
+
+__all__ = ["MiniMaxM2Config"]
diff --git a/docs/sglang_deploy_guide.md b/docs/sglang_deploy_guide.md
new file mode 100644
index 0000000..720067d
--- /dev/null
+++ b/docs/sglang_deploy_guide.md
@@ -0,0 +1,111 @@
+# MiniMax M2.5 Model SGLang Deployment Guide
+
+[English Version](./sglang_deploy_guide.md) | [Chinese Version](./sglang_deploy_guide_cn.md)
+
+We recommend using [SGLang](https://github.com/sgl-project/sglang) to deploy the [MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5) model. SGLang is a high-performance inference engine with excellent serving throughput, efficient and intelligent memory management, powerful batch request processing capabilities, and deeply optimized underlying performance. We recommend reviewing SGLang's official documentation to check hardware compatibility before deployment.
+
+## Applicable Models
+
+This document applies to the following models. You only need to change the model name during deployment.
+
+- [MiniMaxAI/MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5)
+- [MiniMaxAI/MiniMax-M2.1](https://huggingface.co/MiniMaxAI/MiniMax-M2.1)
+- [MiniMaxAI/MiniMax-M2](https://huggingface.co/MiniMaxAI/MiniMax-M2)
+
+The deployment process is illustrated below using MiniMax-M2.5 as an example.
+
+## System Requirements
+
+- OS: Linux
+
+- Python: 3.9 - 3.12
+
+- GPU:
+
+ - compute capability 7.0 or higher
+
+ - Memory requirements: 220 GB for weights, 240 GB per 1M context tokens
+
+The following are recommended configurations; actual requirements should be adjusted based on your use case:
+
+- **96G x4** GPU: Supports a total KV Cache capacity of 400K tokens.
+
+- **144G x8** GPU: Supports a total KV Cache capacity of up to 3M tokens.
+
+> **Note**: The values above represent the total aggregate hardware KV Cache capacity. The maximum context length per individual sequence remains **196K** tokens.
+
+## Deployment with Python
+
+It is recommended to use a virtual environment (such as **venv**, **conda**, or **uv**) to avoid dependency conflicts.
+
+We recommend installing SGLang in a fresh Python environment:
+
+```bash
+uv venv
+source .venv/bin/activate
+uv pip install sglang
+```
+
+Run the following command to start the SGLang server. SGLang will automatically download and cache the MiniMax-M2.5 model from Hugging Face.
+
+4-GPU deployment command:
+
+```bash
+python -m sglang.launch_server \
+ --model-path MiniMaxAI/MiniMax-M2.5 \
+ --tp-size 4 \
+ --tool-call-parser minimax-m2 \
+ --reasoning-parser minimax-append-think \
+ --host 0.0.0.0 \
+ --trust-remote-code \
+ --port 8000 \
+ --mem-fraction-static 0.85
+```
+
+8-GPU deployment command:
+
+```bash
+python -m sglang.launch_server \
+ --model-path MiniMaxAI/MiniMax-M2.5 \
+ --tp-size 8 \
+ --ep-size 8 \
+ --tool-call-parser minimax-m2 \
+ --trust-remote-code \
+ --host 0.0.0.0 \
+ --reasoning-parser minimax-append-think \
+ --port 8000 \
+ --mem-fraction-static 0.85
+```
+
+## Testing Deployment
+
+After startup, you can test the SGLang OpenAI-compatible API with the following command:
+
+```bash
+curl http://localhost:8000/v1/chat/completions \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "MiniMaxAI/MiniMax-M2.5",
+ "messages": [
+ {"role": "system", "content": [{"type": "text", "text": "You are a helpful assistant."}]},
+ {"role": "user", "content": [{"type": "text", "text": "Who won the world series in 2020?"}]}
+ ]
+ }'
+```
+
+## Common Issues
+
+### MiniMax-M2 model is not currently supported
+
+Please upgrade to the latest stable version, >= v0.5.4.post1.
+
+## Getting Support
+
+If you encounter any issues while deploying the MiniMax model:
+
+- Contact our technical support team through official channels such as email at [model@minimax.io](mailto:model@minimax.io)
+
+- Submit an issue on our [GitHub](https://github.com/MiniMax-AI) repository
+
+We continuously optimize the deployment experience for our models. Feedback is welcome!
+
diff --git a/docs/sglang_deploy_guide_cn.md b/docs/sglang_deploy_guide_cn.md
new file mode 100644
index 0000000..67b4250
--- /dev/null
+++ b/docs/sglang_deploy_guide_cn.md
@@ -0,0 +1,120 @@
+# MiniMax M2.5 模型 SGLang 部署指南
+
+[英文版](./sglang_deploy_guide.md) | [中文版](./sglang_deploy_guide_cn.md)
+
+我们推荐使用 [SGLang](https://github.com/sgl-project/sglang) 来部署 [MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5) 模型。SGLang 是一个高性能的推理引擎,其具有卓越的服务吞吐、高效智能的内存管理机制、强大的批量请求处理能力、深度优化的底层性能等特性。我们建议在部署之前查看 SGLang 的官方文档以检查硬件兼容性。
+
+## 本文档适用模型
+
+本文档适用以下模型,只需在部署时修改模型名称即可。
+
+- [MiniMaxAI/MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5)
+- [MiniMaxAI/MiniMax-M2.1](https://huggingface.co/MiniMaxAI/MiniMax-M2.1)
+- [MiniMaxAI/MiniMax-M2](https://huggingface.co/MiniMaxAI/MiniMax-M2)
+
+以下以 MiniMax-M2.5 为例说明部署流程。
+
+## 环境要求
+
+- OS:Linux
+
+- Python:3.9 - 3.12
+
+- GPU:
+
+ - compute capability 7.0 or higher
+
+ - 显存需求:权重需要 220 GB,每 1M 上下文 token 需要 240 GB
+
+以下为推荐配置,实际需求请根据业务场景调整:
+
+- **96G x4 GPU**:总 KV Cache 容量支持 40 万 token。
+
+- **144G x8 GPU**:总 KV Cache 容量支持高达 300 万 token。
+
+> **注**:以上数值为硬件支持的最大并发缓存总量,模型单序列(Single Sequence)长度上限仍为 196k。
+
+## 使用 Python 部署
+
+建议使用虚拟环境(如 **venv**、**conda**、**uv**)以避免依赖冲突。
+
+建议在全新的 Python 环境中安装 SGLang:
+
+```bash
+uv venv
+source .venv/bin/activate
+uv pip install sglang
+```
+
+运行如下命令启动 SGLang 服务器,SGLang 会自动从 Huggingface 下载并缓存 MiniMax-M2.5 模型。
+
+4 卡部署命令:
+
+```bash
+python -m sglang.launch_server \
+ --model-path MiniMaxAI/MiniMax-M2.5 \
+ --tp-size 4 \
+ --tool-call-parser minimax-m2 \
+ --reasoning-parser minimax-append-think \
+ --host 0.0.0.0 \
+ --trust-remote-code \
+ --port 8000 \
+ --mem-fraction-static 0.85
+```
+
+8 卡部署命令:
+
+```bash
+python -m sglang.launch_server \
+ --model-path MiniMaxAI/MiniMax-M2.5 \
+ --tp-size 8 \
+ --ep-size 8 \
+ --tool-call-parser minimax-m2 \
+ --trust-remote-code \
+ --host 0.0.0.0 \
+ --reasoning-parser minimax-append-think \
+ --port 8000 \
+ --mem-fraction-static 0.85
+```
+
+## 测试部署
+
+启动后,可以通过如下命令测试 SGLang OpenAI 兼容接口:
+
+```bash
+curl http://localhost:8000/v1/chat/completions \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "MiniMaxAI/MiniMax-M2.5",
+ "messages": [
+ {"role": "system", "content": [{"type": "text", "text": "You are a helpful assistant."}]},
+ {"role": "user", "content": [{"type": "text", "text": "Who won the world series in 2020?"}]}
+ ]
+ }'
+```
+
+## 常见问题
+
+### Huggingface 网络问题
+
+如果遇到网络问题,可以设置代理后再进行拉取。
+
+```bash
+export HF_ENDPOINT=https://hf-mirror.com
+```
+
+### MiniMax-M2 model is not currently supported
+
+请升级到最新的稳定版本, >= v0.5.4.post1.
+
+## 获取支持
+
+如果在部署 MiniMax 模型过程中遇到任何问题:
+
+- 通过邮箱 [model@minimax.io](mailto:model@minimax.io) 等官方渠道联系我们的技术支持团队
+
+- 在我们的 [GitHub](https://github.com/MiniMax-AI) 仓库提交 Issue
+
+- 通过我们的 [官方企业微信交流群](https://github.com/MiniMax-AI/MiniMax-AI.github.io/blob/main/images/wechat-qrcode.jpeg) 反馈
+
+我们会持续优化模型的部署体验,欢迎反馈!
diff --git a/docs/transformers_deploy_guide.md b/docs/transformers_deploy_guide.md
new file mode 100644
index 0000000..a600ff9
--- /dev/null
+++ b/docs/transformers_deploy_guide.md
@@ -0,0 +1,92 @@
+# MiniMax M2.5 Model Transformers Deployment Guide
+
+[English Version](./transformers_deploy_guide.md) | [Chinese Version](./transformers_deploy_guide_cn.md)
+
+## Applicable Models
+
+This document applies to the following models. You only need to change the model name during deployment.
+
+- [MiniMaxAI/MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5)
+- [MiniMaxAI/MiniMax-M2.1](https://huggingface.co/MiniMaxAI/MiniMax-M2.1)
+- [MiniMaxAI/MiniMax-M2](https://huggingface.co/MiniMaxAI/MiniMax-M2)
+
+The deployment process is illustrated below using MiniMax-M2.5 as an example.
+
+## System Requirements
+
+- OS: Linux
+
+- Python: 3.9 - 3.12
+
+- Transformers: 4.57.1
+
+- GPU:
+
+ - compute capability 7.0 or higher
+
+ - Memory requirements: 220 GB for weights.
+
+## Deployment with Python
+
+It is recommended to use a virtual environment (such as **venv**, **conda**, or **uv**) to avoid dependency conflicts.
+
+We recommend installing Transformers in a fresh Python environment:
+
+```bash
+uv pip install transformers==4.57.1 torch accelerate --torch-backend=auto
+```
+
+Run the following Python script to run the model. Transformers will automatically download and cache the MiniMax-M2.5 model from Hugging Face.
+
+```python
+from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
+import torch
+
+MODEL_PATH = "MiniMaxAI/MiniMax-M2.5"
+
+model = AutoModelForCausalLM.from_pretrained(
+ MODEL_PATH,
+ device_map="auto",
+ trust_remote_code=True,
+)
+tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
+
+messages = [
+ {"role": "user", "content": [{"type": "text", "text": "What is your favourite condiment?"}]},
+ {"role": "assistant", "content": [{"type": "text", "text": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"}]},
+ {"role": "user", "content": [{"type": "text", "text": "Do you have mayonnaise recipes?"}]}
+]
+
+model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to("cuda")
+
+generated_ids = model.generate(model_inputs, max_new_tokens=100, generation_config=model.generation_config)
+
+response = tokenizer.batch_decode(generated_ids)[0]
+
+print(response)
+```
+
+## Common Issues
+
+### Hugging Face Network Issues
+
+If you encounter network issues, you can set up a proxy before pulling the model.
+
+```bash
+export HF_ENDPOINT=https://hf-mirror.com
+```
+
+### MiniMax-M2 model is not currently supported
+
+Please check that trust_remote_code=True.
+
+## Getting Support
+
+If you encounter any issues while deploying the MiniMax model:
+
+- Contact our technical support team through official channels such as email at [model@minimax.io](mailto:model@minimax.io)
+
+- Submit an issue on our [GitHub](https://github.com/MiniMax-AI) repository
+
+We continuously optimize the deployment experience for our models. Feedback is welcome!
+
diff --git a/docs/transformers_deploy_guide_cn.md b/docs/transformers_deploy_guide_cn.md
new file mode 100644
index 0000000..dcb2c4f
--- /dev/null
+++ b/docs/transformers_deploy_guide_cn.md
@@ -0,0 +1,93 @@
+# MiniMax M2.5 模型 Transformers 部署指南
+
+[英文版](./transformers_deploy_guide.md) | [中文版](./transformers_deploy_guide_cn.md)
+
+## 本文档适用模型
+
+本文档适用以下模型,只需在部署时修改模型名称即可。
+
+- [MiniMaxAI/MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5)
+- [MiniMaxAI/MiniMax-M2.1](https://huggingface.co/MiniMaxAI/MiniMax-M2.1)
+- [MiniMaxAI/MiniMax-M2](https://huggingface.co/MiniMaxAI/MiniMax-M2)
+
+以下以 MiniMax-M2.5 为例说明部署流程。
+
+## 环境要求
+
+- OS:Linux
+
+- Python:3.9 - 3.12
+
+- Transformers: 4.57.1
+
+- GPU:
+
+ - compute capability 7.0 or higher
+
+ - 显存需求:权重需要 220 GB
+
+## 使用 Python 部署
+
+建议使用虚拟环境(如 **venv**、**conda**、**uv**)以避免依赖冲突。
+
+建议在全新的 Python 环境中安装 Transformers:
+
+```bash
+uv pip install transformers==4.57.1 torch accelerate --torch-backend=auto
+```
+
+运行如下 Python 命令运行模型,Transformers 会自动从 Huggingface 下载并缓存 MiniMax-M2.5 模型。
+
+```python
+from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
+import torch
+
+MODEL_PATH = "MiniMaxAI/MiniMax-M2.5"
+
+model = AutoModelForCausalLM.from_pretrained(
+ MODEL_PATH,
+ device_map="auto",
+ trust_remote_code=True,
+)
+tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
+
+messages = [
+ {"role": "user", "content": [{"type": "text", "text": "What is your favourite condiment?"}]},
+ {"role": "assistant", "content": [{"type": "text", "text": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"}]},
+ {"role": "user", "content": [{"type": "text", "text": "Do you have mayonnaise recipes?"}]}
+]
+
+model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to("cuda")
+
+generated_ids = model.generate(model_inputs, max_new_tokens=100, generation_config=model.generation_config)
+
+response = tokenizer.batch_decode(generated_ids)[0]
+
+print(response)
+```
+
+## 常见问题
+
+### Huggingface 网络问题
+
+如果遇到网络问题,可以设置代理后再进行拉取。
+
+```bash
+export HF_ENDPOINT=https://hf-mirror.com
+```
+
+### MiniMax-M2 model is not currently supported
+
+请确认开启 trust_remote_code=True。
+
+## 获取支持
+
+如果在部署 MiniMax 模型过程中遇到任何问题:
+
+- 通过邮箱 [model@minimax.io](mailto:model@minimax.io) 等官方渠道联系我们的技术支持团队
+
+- 在我们的 [GitHub](https://github.com/MiniMax-AI) 仓库提交 Issue
+
+- 通过我们的 [官方企业微信交流群](https://github.com/MiniMax-AI/MiniMax-AI.github.io/blob/main/images/wechat-qrcode.jpeg) 反馈
+
+我们会持续优化模型的部署体验,欢迎反馈!
diff --git a/docs/vllm_deploy_guide.md b/docs/vllm_deploy_guide.md
new file mode 100644
index 0000000..9bcaf50
--- /dev/null
+++ b/docs/vllm_deploy_guide.md
@@ -0,0 +1,117 @@
+# MiniMax M2.5 Model vLLM Deployment Guide
+
+[English Version](./vllm_deploy_guide.md) | [Chinese Version](./vllm_deploy_guide_cn.md)
+
+We recommend using [vLLM](https://docs.vllm.ai/en/stable/) to deploy the [MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5) model. vLLM is a high-performance inference engine with excellent serving throughput, efficient and intelligent memory management, powerful batch request processing capabilities, and deeply optimized underlying performance. We recommend reviewing vLLM's official documentation to check hardware compatibility before deployment.
+
+## Applicable Models
+
+This document applies to the following models. You only need to change the model name during deployment.
+
+- [MiniMaxAI/MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5)
+- [MiniMaxAI/MiniMax-M2.1](https://huggingface.co/MiniMaxAI/MiniMax-M2.1)
+- [MiniMaxAI/MiniMax-M2](https://huggingface.co/MiniMaxAI/MiniMax-M2)
+
+The deployment process is illustrated below using MiniMax-M2.5 as an example.
+
+## System Requirements
+
+- OS: Linux
+
+- Python: 3.9 - 3.12
+
+- GPU:
+
+ - compute capability 7.0 or higher
+
+ - Memory requirements: 220 GB for weights, 240 GB per 1M context tokens
+
+The following are recommended configurations; actual requirements should be adjusted based on your use case:
+
+- **96G x4** GPU: Supports a total KV Cache capacity of 400K tokens.
+
+- **144G x8** GPU: Supports a total KV Cache capacity of up to 3M tokens.
+
+> **Note**: The values above represent the total aggregate hardware KV Cache capacity. The maximum context length per individual sequence remains **196K** tokens.
+
+## Deployment with Python
+
+It is recommended to use a virtual environment (such as **venv**, **conda**, or **uv**) to avoid dependency conflicts.
+
+We recommend installing vLLM in a fresh Python environment:
+
+```bash
+uv venv
+source .venv/bin/activate
+uv pip install vllm --torch-backend=auto
+```
+
+Run the following command to start the vLLM server. vLLM will automatically download and cache the MiniMax-M2.5 model from Hugging Face.
+
+4-GPU deployment command:
+
+```bash
+SAFETENSORS_FAST_GPU=1 vllm serve \
+ MiniMaxAI/MiniMax-M2.5 --trust-remote-code \
+ --tensor-parallel-size 4 \
+ --enable-auto-tool-choice --tool-call-parser minimax_m2 \
+ --reasoning-parser minimax_m2_append_think
+```
+
+8-GPU deployment command:
+
+```bash
+SAFETENSORS_FAST_GPU=1 vllm serve \
+ MiniMaxAI/MiniMax-M2.5 --trust-remote-code \
+ --enable_expert_parallel --tensor-parallel-size 8 \
+ --enable-auto-tool-choice --tool-call-parser minimax_m2 \
+ --reasoning-parser minimax_m2_append_think
+```
+
+## Testing Deployment
+
+After startup, you can test the vLLM OpenAI-compatible API with the following command:
+
+```bash
+curl http://localhost:8000/v1/chat/completions \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "MiniMaxAI/MiniMax-M2.5",
+ "messages": [
+ {"role": "system", "content": [{"type": "text", "text": "You are a helpful assistant."}]},
+ {"role": "user", "content": [{"type": "text", "text": "Who won the world series in 2020?"}]}
+ ]
+ }'
+```
+
+## Common Issues
+
+### MiniMax-M2 model is not currently supported
+
+This vLLM version is outdated. Please upgrade to the latest version.
+
+### torch.AcceleratorError: CUDA error: an illegal memory access was encountered
+Add `--compilation-config "{\"cudagraph_mode\": \"PIECEWISE\"}"` to the startup parameters to resolve this issue. For example:
+
+```bash
+SAFETENSORS_FAST_GPU=1 vllm serve \
+ MiniMaxAI/MiniMax-M2.5 --trust-remote-code \
+ --enable_expert_parallel --tensor-parallel-size 8 \
+ --enable-auto-tool-choice --tool-call-parser minimax_m2 \
+ --reasoning-parser minimax_m2_append_think \
+ --compilation-config "{\"cudagraph_mode\": \"PIECEWISE\"}"
+```
+
+### Output is garbled
+
+If you encounter corrupted output when using vLLM to serve these models, you can upgrade to the nightly version (ensure it is a version after commit [cf3eacfe58fa9e745c2854782ada884a9f992cf7](https://github.com/vllm-project/vllm/commit/cf3eacfe58fa9e745c2854782ada884a9f992cf7))
+
+## Getting Support
+
+If you encounter any issues while deploying the MiniMax model:
+
+- Contact our technical support team through official channels such as email at [model@minimax.io](mailto:model@minimax.io)
+
+- Submit an issue on our [GitHub](https://github.com/MiniMax-AI) repository
+
+We continuously optimize the deployment experience for our models. Feedback is welcome!
diff --git a/docs/vllm_deploy_guide_cn.md b/docs/vllm_deploy_guide_cn.md
new file mode 100644
index 0000000..b50e9d9
--- /dev/null
+++ b/docs/vllm_deploy_guide_cn.md
@@ -0,0 +1,127 @@
+# MiniMax M2.5 模型 vLLM 部署指南
+
+[英文版](./vllm_deploy_guide.md) | [中文版](./vllm_deploy_guide_cn.md)
+
+我们推荐使用 [vLLM](https://docs.vllm.ai/en/stable/) 来部署 [MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5) 模型。vLLM 是一个高性能的推理引擎,其具有卓越的服务吞吐、高效智能的内存管理机制、强大的批量请求处理能力、深度优化的底层性能等特性。我们建议在部署之前查看 vLLM 的官方文档以检查硬件兼容性。
+
+## 本文档适用模型
+
+本文档适用以下模型,只需在部署时修改模型名称即可。
+
+- [MiniMaxAI/MiniMax-M2.5](https://huggingface.co/MiniMaxAI/MiniMax-M2.5)
+- [MiniMaxAI/MiniMax-M2.1](https://huggingface.co/MiniMaxAI/MiniMax-M2.1)
+- [MiniMaxAI/MiniMax-M2](https://huggingface.co/MiniMaxAI/MiniMax-M2)
+
+以下以 MiniMax-M2.5 为例说明部署流程。
+
+## 环境要求
+
+- OS:Linux
+
+- Python:3.9 - 3.12
+
+- GPU:
+
+ - compute capability 7.0 or higher
+
+ - 显存需求:权重需要 220 GB,每 1M 上下文 token 需要 240 GB
+
+以下为推荐配置,实际需求请根据业务场景调整:
+
+- **96G x4 GPU**:总 KV Cache 容量支持 40 万 token。
+
+- **144G x8 GPU**:总 KV Cache 容量支持高达 300 万 token。
+
+> **注**:以上数值为硬件支持的最大并发缓存总量,模型单序列(Single Sequence)长度上限仍为 196k。
+
+## 使用 Python 部署
+
+建议使用虚拟环境(如 **venv**、**conda**、**uv**)以避免依赖冲突。
+
+建议在全新的 Python 环境中安装 vLLM:
+
+```bash
+uv venv
+source .venv/bin/activate
+uv pip install vllm --torch-backend=auto
+```
+
+运行如下命令启动 vLLM 服务器,vLLM 会自动从 Huggingface 下载并缓存 MiniMax-M2.5 模型。
+
+4 卡部署命令:
+
+```bash
+SAFETENSORS_FAST_GPU=1 vllm serve \
+ MiniMaxAI/MiniMax-M2.5 --trust-remote-code \
+ --tensor-parallel-size 4 \
+ --enable-auto-tool-choice --tool-call-parser minimax_m2 \
+ --reasoning-parser minimax_m2_append_think
+```
+
+8 卡部署命令:
+
+```bash
+SAFETENSORS_FAST_GPU=1 vllm serve \
+ MiniMaxAI/MiniMax-M2.5 --trust-remote-code \
+ --enable_expert_parallel --tensor-parallel-size 8 \
+ --enable-auto-tool-choice --tool-call-parser minimax_m2 \
+ --reasoning-parser minimax_m2_append_think
+```
+
+## 测试部署
+
+启动后,可以通过如下命令测试 vLLM OpenAI 兼容接口:
+
+```bash
+curl http://localhost:8000/v1/chat/completions \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "MiniMaxAI/MiniMax-M2.5",
+ "messages": [
+ {"role": "system", "content": [{"type": "text", "text": "You are a helpful assistant."}]},
+ {"role": "user", "content": [{"type": "text", "text": "Who won the world series in 2020?"}]}
+ ]
+ }'
+```
+
+## 常见问题
+
+### Huggingface 网络问题
+
+如果遇到网络问题,可以设置代理后再进行拉取。
+
+```bash
+export HF_ENDPOINT=https://hf-mirror.com
+```
+
+### MiniMax-M2 model is not currently supported
+
+该 vLLM 版本过旧,请升级到最新版本。
+
+### torch.AcceleratorError: CUDA error: an illegal memory access was encountered
+在启动参数添加 `--compilation-config "{\"cudagraph_mode\": \"PIECEWISE\"}"` 可以解决。例如:
+
+```bash
+SAFETENSORS_FAST_GPU=1 vllm serve \
+ MiniMaxAI/MiniMax-M2.5 --trust-remote-code \
+ --enable_expert_parallel --tensor-parallel-size 8 \
+ --enable-auto-tool-choice --tool-call-parser minimax_m2 \
+ --reasoning-parser minimax_m2_append_think \
+ --compilation-config "{\"cudagraph_mode\": \"PIECEWISE\"}"
+```
+
+### 模型输出乱码
+
+如果您在使用 vLLM 运行这些模型时遇到输出乱码,可以升级到最新版本(请至少确保版本在提交 [cf3eacfe58fa9e745c2854782ada884a9f992cf7](https://github.com/vllm-project/vllm/commit/cf3eacfe58fa9e745c2854782ada884a9f992cf7) 之后)。
+
+## 获取支持
+
+如果在部署 MiniMax 模型过程中遇到任何问题:
+
+- 通过邮箱 [model@minimax.io](mailto:model@minimax.io) 等官方渠道联系我们的技术支持团队
+
+- 在我们的 [GitHub](https://github.com/MiniMax-AI) 仓库提交 Issue
+
+- 通过我们的 [官方企业微信交流群](https://github.com/MiniMax-AI/MiniMax-AI.github.io/blob/main/images/wechat-qrcode.jpeg) 反馈
+
+我们会持续优化模型的部署体验,欢迎反馈!
diff --git a/figures/bench_1.png b/figures/bench_1.png
new file mode 100644
index 0000000..b8e18a6
Binary files /dev/null and b/figures/bench_1.png differ
diff --git a/figures/bench_10.png b/figures/bench_10.png
new file mode 100644
index 0000000..bb7cb9a
Binary files /dev/null and b/figures/bench_10.png differ
diff --git a/figures/bench_11.png b/figures/bench_11.png
new file mode 100644
index 0000000..ceb9508
Binary files /dev/null and b/figures/bench_11.png differ
diff --git a/figures/bench_2.png b/figures/bench_2.png
new file mode 100644
index 0000000..3f086d3
Binary files /dev/null and b/figures/bench_2.png differ
diff --git a/figures/bench_3.png b/figures/bench_3.png
new file mode 100644
index 0000000..5541f3c
Binary files /dev/null and b/figures/bench_3.png differ
diff --git a/figures/bench_4.png b/figures/bench_4.png
new file mode 100644
index 0000000..8452ed0
Binary files /dev/null and b/figures/bench_4.png differ
diff --git a/figures/bench_5.png b/figures/bench_5.png
new file mode 100644
index 0000000..94eaefe
Binary files /dev/null and b/figures/bench_5.png differ
diff --git a/figures/bench_6.png b/figures/bench_6.png
new file mode 100644
index 0000000..f75e72b
Binary files /dev/null and b/figures/bench_6.png differ
diff --git a/figures/bench_7.png b/figures/bench_7.png
new file mode 100644
index 0000000..fba86c8
Binary files /dev/null and b/figures/bench_7.png differ
diff --git a/figures/bench_8.png b/figures/bench_8.png
new file mode 100644
index 0000000..6b0a15c
Binary files /dev/null and b/figures/bench_8.png differ
diff --git a/figures/bench_9.png b/figures/bench_9.png
new file mode 100644
index 0000000..9aa12a6
Binary files /dev/null and b/figures/bench_9.png differ
diff --git a/figures/rl_1.png b/figures/rl_1.png
new file mode 100644
index 0000000..da909ff
Binary files /dev/null and b/figures/rl_1.png differ
diff --git a/figures/rl_2.png b/figures/rl_2.png
new file mode 100644
index 0000000..b089d84
Binary files /dev/null and b/figures/rl_2.png differ
diff --git a/generation_config.json b/generation_config.json
new file mode 100644
index 0000000..30b418a
--- /dev/null
+++ b/generation_config.json
@@ -0,0 +1,9 @@
+{
+ "bos_token_id": 200019,
+ "do_sample": true,
+ "eos_token_id": 200020,
+ "temperature": 1.0,
+ "top_p": 0.95,
+ "top_k": 40,
+ "transformers_version": "4.46.1"
+}
diff --git a/merges.txt b/merges.txt
new file mode 100644
index 0000000..6a86280
--- /dev/null
+++ b/merges.txt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca47ea60cf5bd48832586adc264f439d0ea4254176b24a95f85eaa9750e2b5f9
+size 2414077
diff --git a/model-00000-of-00126.safetensors b/model-00000-of-00126.safetensors
new file mode 100644
index 0000000..7fedcdd
--- /dev/null
+++ b/model-00000-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1b1c5466a9970efff18d4de8c0ab60cbfc712473b233034e0694971b9d49ef80
+size 3693062776
diff --git a/model-00001-of-00126.safetensors b/model-00001-of-00126.safetensors
new file mode 100644
index 0000000..d2d4fb8
--- /dev/null
+++ b/model-00001-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed126600b65b79847e2b0e46b1df3f06193151cb1eeaf0dfd31c0080f73feb1d
+size 1208321208
diff --git a/model-00002-of-00126.safetensors b/model-00002-of-00126.safetensors
new file mode 100644
index 0000000..10ceb20
--- /dev/null
+++ b/model-00002-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e01f274b2ea33d8be995e88979f57910a03ee2a982e730587848fab59b90a8b4
+size 2463868968
diff --git a/model-00003-of-00126.safetensors b/model-00003-of-00126.safetensors
new file mode 100644
index 0000000..e5a89c5
--- /dev/null
+++ b/model-00003-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3bbe8d7dd07fb4fd4f9cbb994f99dda8262bcebd426c4ade445778fef79dc05d
+size 1208321208
diff --git a/model-00004-of-00126.safetensors b/model-00004-of-00126.safetensors
new file mode 100644
index 0000000..f28968c
--- /dev/null
+++ b/model-00004-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:73098f1d0c8abb2cf6a6eeae0ac56c9f74827db99f21daf27dc9025b2d8b53bb
+size 2463868968
diff --git a/model-00005-of-00126.safetensors b/model-00005-of-00126.safetensors
new file mode 100644
index 0000000..09561eb
--- /dev/null
+++ b/model-00005-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca9c8234a91d4fa5bed8972e1acb9a478fefc3d0616aa75a7054e5ed42a355ab
+size 1208321208
diff --git a/model-00006-of-00126.safetensors b/model-00006-of-00126.safetensors
new file mode 100644
index 0000000..61687c9
--- /dev/null
+++ b/model-00006-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28fb1bb3e1e10aaf0d94922b381cfbf10fab932594104e8639f3500b8f6b7fe5
+size 2463868968
diff --git a/model-00007-of-00126.safetensors b/model-00007-of-00126.safetensors
new file mode 100644
index 0000000..c195f30
--- /dev/null
+++ b/model-00007-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:719cdde66b577b3b78f32218ae35829a692f42d5a8365564293b6b4572a3bf19
+size 1208321208
diff --git a/model-00008-of-00126.safetensors b/model-00008-of-00126.safetensors
new file mode 100644
index 0000000..b43aedb
--- /dev/null
+++ b/model-00008-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f28a408bd995f95d645a0afdb09187c77e68201876935a346a3e18de80603f8
+size 2463868968
diff --git a/model-00009-of-00126.safetensors b/model-00009-of-00126.safetensors
new file mode 100644
index 0000000..0fd7e5e
--- /dev/null
+++ b/model-00009-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9dbfc5fb0c262222af4db090dd979525af71cf8c8202569d4c9f99a5d3985af3
+size 1208321208
diff --git a/model-00010-of-00126.safetensors b/model-00010-of-00126.safetensors
new file mode 100644
index 0000000..e329aae
--- /dev/null
+++ b/model-00010-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13c4908d9edd395bbaf84f905148051f759f4c494cd69bf396bec06687fc0edd
+size 2463868968
diff --git a/model-00011-of-00126.safetensors b/model-00011-of-00126.safetensors
new file mode 100644
index 0000000..dfd6372
--- /dev/null
+++ b/model-00011-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4dfcc175b5553cfff3cb2b7d63b6cdf8919421be4d12bd9dfda176de6477f583
+size 1208321208
diff --git a/model-00012-of-00126.safetensors b/model-00012-of-00126.safetensors
new file mode 100644
index 0000000..7256626
--- /dev/null
+++ b/model-00012-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6765316e7a69e78e62fde1b620f6e75067669bed32757368fcbbe8505cbb440d
+size 2463868968
diff --git a/model-00013-of-00126.safetensors b/model-00013-of-00126.safetensors
new file mode 100644
index 0000000..33e97ef
--- /dev/null
+++ b/model-00013-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46468675fadd24ed94a04efe21c44d283a1e351eb4ff315d5f8bad2b5ff9151f
+size 1208321208
diff --git a/model-00014-of-00126.safetensors b/model-00014-of-00126.safetensors
new file mode 100644
index 0000000..5627627
--- /dev/null
+++ b/model-00014-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba50107d7536ebe1a395c0e80b679dfa11a538cb7b8d89eb2f252734a33cc63
+size 2463868968
diff --git a/model-00015-of-00126.safetensors b/model-00015-of-00126.safetensors
new file mode 100644
index 0000000..6697b84
--- /dev/null
+++ b/model-00015-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:863708baaceaf7658b7d07144bf57e9f34ecfc278f2be7ef104ff2c5a3535e7c
+size 1208321208
diff --git a/model-00016-of-00126.safetensors b/model-00016-of-00126.safetensors
new file mode 100644
index 0000000..a288a2b
--- /dev/null
+++ b/model-00016-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e00f33983210adcdf7f131fee0f8391f2afba477b21808d48e0f6a0e7540ae4b
+size 2463868968
diff --git a/model-00017-of-00126.safetensors b/model-00017-of-00126.safetensors
new file mode 100644
index 0000000..a12e13e
--- /dev/null
+++ b/model-00017-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:549da782be1d9803a585387d2a082ebbe46d3cd214bec1702d6cbfb47421814f
+size 1208321208
diff --git a/model-00018-of-00126.safetensors b/model-00018-of-00126.safetensors
new file mode 100644
index 0000000..376b8ba
--- /dev/null
+++ b/model-00018-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41009aef1e3a3871ecd2b931a6a8f666d8f00074f113ec241740d976279ec82c
+size 2463868968
diff --git a/model-00019-of-00126.safetensors b/model-00019-of-00126.safetensors
new file mode 100644
index 0000000..46acaf0
--- /dev/null
+++ b/model-00019-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee7f5ae1d73509de35105fcd707bba37410c9ef738287ae607386f168ed22250
+size 1208321208
diff --git a/model-00020-of-00126.safetensors b/model-00020-of-00126.safetensors
new file mode 100644
index 0000000..61fff84
--- /dev/null
+++ b/model-00020-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9b3f1d32c7687a4f470a837501da6f276121dab89b2559e12f7c16e69cb7aeb
+size 2463870000
diff --git a/model-00021-of-00126.safetensors b/model-00021-of-00126.safetensors
new file mode 100644
index 0000000..2636f50
--- /dev/null
+++ b/model-00021-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c4de90e8bc55be57c694d3adc754370836738c2eef4f3dd778a379a85ed2e0d
+size 1208321720
diff --git a/model-00022-of-00126.safetensors b/model-00022-of-00126.safetensors
new file mode 100644
index 0000000..90d9982
--- /dev/null
+++ b/model-00022-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2db1caad71c7b6e6fb6cc9c76cb4630c7994c731236405c5a5efc993adaf931
+size 2463870000
diff --git a/model-00023-of-00126.safetensors b/model-00023-of-00126.safetensors
new file mode 100644
index 0000000..7aeeef8
--- /dev/null
+++ b/model-00023-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d06531f2e74eedc5fa5a03dae62cbcf804afac22fe184bd00ad90b211f4795d6
+size 1208321720
diff --git a/model-00024-of-00126.safetensors b/model-00024-of-00126.safetensors
new file mode 100644
index 0000000..c815d09
--- /dev/null
+++ b/model-00024-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46dd4067c9971b7ff3160e0cd1c29143bf464db286a35efffdbc7aa12df7ff11
+size 2463870000
diff --git a/model-00025-of-00126.safetensors b/model-00025-of-00126.safetensors
new file mode 100644
index 0000000..e9983d1
--- /dev/null
+++ b/model-00025-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf5da218100165ee1973101083a45202a4a9176d80fad139652adb04444f80d3
+size 1208321720
diff --git a/model-00026-of-00126.safetensors b/model-00026-of-00126.safetensors
new file mode 100644
index 0000000..89098df
--- /dev/null
+++ b/model-00026-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d426f7035f1120b0b6c7c5370ce5595f90d5fb9a132c743c046ff59db5cb265
+size 2463870000
diff --git a/model-00027-of-00126.safetensors b/model-00027-of-00126.safetensors
new file mode 100644
index 0000000..c98e23d
--- /dev/null
+++ b/model-00027-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b8875b5644c876c229c453f0e9bae040d54dc364da0d8005bf1161813db7c7f
+size 1208321720
diff --git a/model-00028-of-00126.safetensors b/model-00028-of-00126.safetensors
new file mode 100644
index 0000000..894e19d
--- /dev/null
+++ b/model-00028-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2518a73b3974b4f0d3c215ddef5a7e0e12644163573b5b5decd8ce50a152793c
+size 2463870000
diff --git a/model-00029-of-00126.safetensors b/model-00029-of-00126.safetensors
new file mode 100644
index 0000000..bb23ca8
--- /dev/null
+++ b/model-00029-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:275939435df08f8223cad05ae0af71ea06b55cb9afe3f64cc766fd9b81a0844e
+size 1208321720
diff --git a/model-00030-of-00126.safetensors b/model-00030-of-00126.safetensors
new file mode 100644
index 0000000..971af06
--- /dev/null
+++ b/model-00030-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ab4d0c2c8ee70e59460f5ec00fe988f1ff681e78a5ae089773b9b2b42fc6beb2
+size 2463870000
diff --git a/model-00031-of-00126.safetensors b/model-00031-of-00126.safetensors
new file mode 100644
index 0000000..9ea6669
--- /dev/null
+++ b/model-00031-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90cb43eb2e0169961033bbd43983644acee48e921aa3e232b187c24e9ada0397
+size 1208321720
diff --git a/model-00032-of-00126.safetensors b/model-00032-of-00126.safetensors
new file mode 100644
index 0000000..7bd0f45
--- /dev/null
+++ b/model-00032-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdef46dd4b737e39cd61425bc32113b431d1aa095e648eafdb8560a274316f61
+size 2463870000
diff --git a/model-00033-of-00126.safetensors b/model-00033-of-00126.safetensors
new file mode 100644
index 0000000..3e9ef38
--- /dev/null
+++ b/model-00033-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a22b4f151873f8533308bca289db23ad07e77d5d6bbad358f7185214d0477321
+size 1208321720
diff --git a/model-00034-of-00126.safetensors b/model-00034-of-00126.safetensors
new file mode 100644
index 0000000..fc7b355
--- /dev/null
+++ b/model-00034-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cddc3fce4142f03b7dd0114863d425c93c8499c7364a5188599b716cf0dff14e
+size 2463870000
diff --git a/model-00035-of-00126.safetensors b/model-00035-of-00126.safetensors
new file mode 100644
index 0000000..83f4e3a
--- /dev/null
+++ b/model-00035-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aeede5d62eafad803c8fd70644543d3434449bc17ab898d3405f39f674fcd613
+size 1208321720
diff --git a/model-00036-of-00126.safetensors b/model-00036-of-00126.safetensors
new file mode 100644
index 0000000..7d5215f
--- /dev/null
+++ b/model-00036-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85d5547bbe03ddc2a319ecaf5601ae5471e95ad24aa8489ce1535e60ebb53e1d
+size 2463870000
diff --git a/model-00037-of-00126.safetensors b/model-00037-of-00126.safetensors
new file mode 100644
index 0000000..8143603
--- /dev/null
+++ b/model-00037-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fa4aa203fd33d1fdf8aef5e5c77a2dca6adf52e1d36cea122888c6da5eda159
+size 1208321720
diff --git a/model-00038-of-00126.safetensors b/model-00038-of-00126.safetensors
new file mode 100644
index 0000000..fb0d006
--- /dev/null
+++ b/model-00038-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:330dbd9c71d6d110c6eb845f968f5954ee70f772584ff99df9b6871a921a5e38
+size 2463870000
diff --git a/model-00039-of-00126.safetensors b/model-00039-of-00126.safetensors
new file mode 100644
index 0000000..e10cf9f
--- /dev/null
+++ b/model-00039-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f0ce38595220a00e51a53ea32b6cf1035b1c780ba4e274dc61748ac210a1db56
+size 1208321720
diff --git a/model-00040-of-00126.safetensors b/model-00040-of-00126.safetensors
new file mode 100644
index 0000000..28885ba
--- /dev/null
+++ b/model-00040-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ce08f09007e623a7b7f79cdab47ba4f8dc54a5c6be852e69264f030fa0f3065
+size 2463870000
diff --git a/model-00041-of-00126.safetensors b/model-00041-of-00126.safetensors
new file mode 100644
index 0000000..2d64151
--- /dev/null
+++ b/model-00041-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d0e4c4fdaa567cea9bc6695c00ae234cf7b9db993164fb4ed7ef4dcf8266136
+size 1208321720
diff --git a/model-00042-of-00126.safetensors b/model-00042-of-00126.safetensors
new file mode 100644
index 0000000..f985225
--- /dev/null
+++ b/model-00042-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45c0a0c9455c93c7065dcfce7ba6863c5db3c727d3d2564b79fc088fbe0f2037
+size 2463870000
diff --git a/model-00043-of-00126.safetensors b/model-00043-of-00126.safetensors
new file mode 100644
index 0000000..b20ec9f
--- /dev/null
+++ b/model-00043-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:edd078ceb93e7ac863cda3e5ce0a7a364b068137544e8413339dfcc7f5280af2
+size 1208321720
diff --git a/model-00044-of-00126.safetensors b/model-00044-of-00126.safetensors
new file mode 100644
index 0000000..a72a5a5
--- /dev/null
+++ b/model-00044-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d026b30f983279df9691a0d4de034571dc514f3784dfcd1213b3c9cc91c8e97f
+size 2463870000
diff --git a/model-00045-of-00126.safetensors b/model-00045-of-00126.safetensors
new file mode 100644
index 0000000..dc171dc
--- /dev/null
+++ b/model-00045-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d693a9decbf6255ddd54e67228edf921faeabaf8d141659c71b890cec7defb72
+size 1208321720
diff --git a/model-00046-of-00126.safetensors b/model-00046-of-00126.safetensors
new file mode 100644
index 0000000..d16612f
--- /dev/null
+++ b/model-00046-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e4ab9efb0787a344a0e092950b452b67fb6d5105945eda109453400960dd1f1
+size 2463870000
diff --git a/model-00047-of-00126.safetensors b/model-00047-of-00126.safetensors
new file mode 100644
index 0000000..e58265f
--- /dev/null
+++ b/model-00047-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:736d97f77a0684ecad6125fc63766ffed5cad86a0b07f02f5bb504ca9d31b709
+size 1208321720
diff --git a/model-00048-of-00126.safetensors b/model-00048-of-00126.safetensors
new file mode 100644
index 0000000..0ad7bbb
--- /dev/null
+++ b/model-00048-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c2747c4b511a25aadaefd4dfedf4d1d15adf60d250501efb1280cfb90d88990
+size 2463870000
diff --git a/model-00049-of-00126.safetensors b/model-00049-of-00126.safetensors
new file mode 100644
index 0000000..2c28333
--- /dev/null
+++ b/model-00049-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ffa3607b75896c8021a27151cb63caf3d703c5e4e5f385b86a9a2a7a8feb652e
+size 1208321720
diff --git a/model-00050-of-00126.safetensors b/model-00050-of-00126.safetensors
new file mode 100644
index 0000000..48df655
--- /dev/null
+++ b/model-00050-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d79646bc2d4ef2cf4daaebe019ff3403122c9a5161ebff9f701638777353078f
+size 2463870000
diff --git a/model-00051-of-00126.safetensors b/model-00051-of-00126.safetensors
new file mode 100644
index 0000000..b2a1dc3
--- /dev/null
+++ b/model-00051-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7cfc68037dd760ad6ea326c3ca72e2e27c84f1b54cd0557b0ed553e291f9dbc6
+size 1208321720
diff --git a/model-00052-of-00126.safetensors b/model-00052-of-00126.safetensors
new file mode 100644
index 0000000..10efb0b
--- /dev/null
+++ b/model-00052-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b6d7e21cd053f181085ef9f99afd2b864293d2a42e0232dd90e8379c340a559
+size 2463870000
diff --git a/model-00053-of-00126.safetensors b/model-00053-of-00126.safetensors
new file mode 100644
index 0000000..b8f8a08
--- /dev/null
+++ b/model-00053-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc48ad7ebb3307394b7011bba4248d2ef487238750f3d8abb4bab851d61dd791
+size 1208321720
diff --git a/model-00054-of-00126.safetensors b/model-00054-of-00126.safetensors
new file mode 100644
index 0000000..4d97f2a
--- /dev/null
+++ b/model-00054-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45eba87312cd1de165f64d83fd8d7019514a6fda3e7f1d6986b52f65237f769c
+size 2463870000
diff --git a/model-00055-of-00126.safetensors b/model-00055-of-00126.safetensors
new file mode 100644
index 0000000..296f737
--- /dev/null
+++ b/model-00055-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a5d1551a0afc63411068b0b113329a8d2cbb1ba62fec8fc3c595ccc4331e855
+size 1208321720
diff --git a/model-00056-of-00126.safetensors b/model-00056-of-00126.safetensors
new file mode 100644
index 0000000..3bdb49f
--- /dev/null
+++ b/model-00056-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9eba2fef3a19730e0008dd1da29014f82071f4a7d1158524226d2baa5e2f51a
+size 2463870000
diff --git a/model-00057-of-00126.safetensors b/model-00057-of-00126.safetensors
new file mode 100644
index 0000000..3ccc800
--- /dev/null
+++ b/model-00057-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23530a38ed0191282bb17c4b86a4e8ba7851f98f0ad9b27a043611e9d8c44be2
+size 1208321720
diff --git a/model-00058-of-00126.safetensors b/model-00058-of-00126.safetensors
new file mode 100644
index 0000000..5c624d1
--- /dev/null
+++ b/model-00058-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a97673ec72afe4c78944356ffcb0a10d35428df362ef668ec6d0ca779eb48ce
+size 2463870000
diff --git a/model-00059-of-00126.safetensors b/model-00059-of-00126.safetensors
new file mode 100644
index 0000000..e0ffcb8
--- /dev/null
+++ b/model-00059-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea588c26d28d502fc5c3184ee4771937263521e9e4059fd43aadd49bb3e3b8e1
+size 1208321720
diff --git a/model-00060-of-00126.safetensors b/model-00060-of-00126.safetensors
new file mode 100644
index 0000000..7fbfe52
--- /dev/null
+++ b/model-00060-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d7ee9284bf5d4318507fdc4aafcc51821d34a1e072606da7c50a25c923023047
+size 2463870000
diff --git a/model-00061-of-00126.safetensors b/model-00061-of-00126.safetensors
new file mode 100644
index 0000000..14e7704
--- /dev/null
+++ b/model-00061-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e565d13da2b065bc0a9b24044365bcea5f35756791b595aadb771a23bee05089
+size 1208321720
diff --git a/model-00062-of-00126.safetensors b/model-00062-of-00126.safetensors
new file mode 100644
index 0000000..daad356
--- /dev/null
+++ b/model-00062-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b15f2d87586e27ca72e5913a3ad8d83fcf6aaaf35300ff2f8f3715a6bb2a694c
+size 2463870000
diff --git a/model-00063-of-00126.safetensors b/model-00063-of-00126.safetensors
new file mode 100644
index 0000000..ac96d77
--- /dev/null
+++ b/model-00063-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bbf5628ada8a6b50d300cd1dc44b36cf45172fabf580dc9e066f41286b24383c
+size 1208321720
diff --git a/model-00064-of-00126.safetensors b/model-00064-of-00126.safetensors
new file mode 100644
index 0000000..6868508
--- /dev/null
+++ b/model-00064-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cbf5b4e8da2ccb572fbe2b745dfe54e598526b748d776530574d120cd370f22e
+size 2463870000
diff --git a/model-00065-of-00126.safetensors b/model-00065-of-00126.safetensors
new file mode 100644
index 0000000..4bdad84
--- /dev/null
+++ b/model-00065-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44486bbde18b0dab1741d5d45e2f02bf2269e054a6eb56b9c57bbc5abf1973e3
+size 1208321720
diff --git a/model-00066-of-00126.safetensors b/model-00066-of-00126.safetensors
new file mode 100644
index 0000000..83d6af2
--- /dev/null
+++ b/model-00066-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f15f19cb76fb87fbd619ee5ab53252a1fde5648aaaa84bac1c8c4f5cb0a30e9d
+size 2463870000
diff --git a/model-00067-of-00126.safetensors b/model-00067-of-00126.safetensors
new file mode 100644
index 0000000..efad6a1
--- /dev/null
+++ b/model-00067-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6b01fe56901cc4da3ddf1b0d93d5eaccfb789dc7b95bba5bbbd1f1e94b908e7
+size 1208321720
diff --git a/model-00068-of-00126.safetensors b/model-00068-of-00126.safetensors
new file mode 100644
index 0000000..ce34213
--- /dev/null
+++ b/model-00068-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aa73015b23d024c86d7af74108e4a59dc93de846d58f3818695f9cab9fbd60b2
+size 2463870000
diff --git a/model-00069-of-00126.safetensors b/model-00069-of-00126.safetensors
new file mode 100644
index 0000000..4fca8b2
--- /dev/null
+++ b/model-00069-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:67c2dbda624c37375871def7bb328a3329d7cf5db36bdd6a610f217e5405edb0
+size 1208321720
diff --git a/model-00070-of-00126.safetensors b/model-00070-of-00126.safetensors
new file mode 100644
index 0000000..99111c7
--- /dev/null
+++ b/model-00070-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:953fd9e8120b4b7ff45990e2b7234136abd904921007f9c7022698ae1a81256f
+size 2463870000
diff --git a/model-00071-of-00126.safetensors b/model-00071-of-00126.safetensors
new file mode 100644
index 0000000..0cdcffb
--- /dev/null
+++ b/model-00071-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c135509d9365fb167d90fbb94d03c1b94c3752ed2119959e99dceb83efde8f8
+size 1208321720
diff --git a/model-00072-of-00126.safetensors b/model-00072-of-00126.safetensors
new file mode 100644
index 0000000..203e433
--- /dev/null
+++ b/model-00072-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2dcc96f23d6a488d0c01fbf6e2b20429c644064a97894bb1770800ceac929055
+size 2463870000
diff --git a/model-00073-of-00126.safetensors b/model-00073-of-00126.safetensors
new file mode 100644
index 0000000..9ac9395
--- /dev/null
+++ b/model-00073-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c344180277049767ef42283501f7a2314e97247e0e57c745678e1605b877991
+size 1208321720
diff --git a/model-00074-of-00126.safetensors b/model-00074-of-00126.safetensors
new file mode 100644
index 0000000..53feab9
--- /dev/null
+++ b/model-00074-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:93fd4f6fbe4d1738b44bed6f311b7ae3ea8af2fab6d4feeecaa89876710140be
+size 2463870000
diff --git a/model-00075-of-00126.safetensors b/model-00075-of-00126.safetensors
new file mode 100644
index 0000000..2c899a9
--- /dev/null
+++ b/model-00075-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:924fa6375622a93762ad3ea8fd040464b2ba68b58cf3905d444235c9c8a88f68
+size 1208321720
diff --git a/model-00076-of-00126.safetensors b/model-00076-of-00126.safetensors
new file mode 100644
index 0000000..87de4f6
--- /dev/null
+++ b/model-00076-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8ca7a229839929d12d053b4e591247364ab0934b4dc726e0432e12972ca0fe34
+size 2463870000
diff --git a/model-00077-of-00126.safetensors b/model-00077-of-00126.safetensors
new file mode 100644
index 0000000..3b13f2f
--- /dev/null
+++ b/model-00077-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e9ac376c306258f33e7f47f1313757286e81ce6b316407cf0e003b6a3e5c3f9
+size 1208321720
diff --git a/model-00078-of-00126.safetensors b/model-00078-of-00126.safetensors
new file mode 100644
index 0000000..dd34024
--- /dev/null
+++ b/model-00078-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d5c22de51aa4dc6404387802fbd71e111ba0ca93c0462fc1ad2168b083516d5
+size 2463870000
diff --git a/model-00079-of-00126.safetensors b/model-00079-of-00126.safetensors
new file mode 100644
index 0000000..766f641
--- /dev/null
+++ b/model-00079-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3b2915d2c3178f0af74a18a36589e08c5ef541dd6bc0b130cbbaef3098dd970
+size 1208321720
diff --git a/model-00080-of-00126.safetensors b/model-00080-of-00126.safetensors
new file mode 100644
index 0000000..2428826
--- /dev/null
+++ b/model-00080-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d13bc8f45e116e0a35af10a7c07e883b7b72826f3e6deb5dd3fece268bc2d4c9
+size 2463870000
diff --git a/model-00081-of-00126.safetensors b/model-00081-of-00126.safetensors
new file mode 100644
index 0000000..32514ed
--- /dev/null
+++ b/model-00081-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1342729fe2442f1c781fc6cdc150019ee48b53b044c3257ad565c7630fd5073a
+size 1208321720
diff --git a/model-00082-of-00126.safetensors b/model-00082-of-00126.safetensors
new file mode 100644
index 0000000..47d7f88
--- /dev/null
+++ b/model-00082-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc5ae65a11fcc496d7ffb9ff3b58081714b22bcc9bdff0a3a573f6d7be945f1a
+size 2463870000
diff --git a/model-00083-of-00126.safetensors b/model-00083-of-00126.safetensors
new file mode 100644
index 0000000..87d53cd
--- /dev/null
+++ b/model-00083-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebbe25aabf442a4a1a33974ee1e3787216b852c71078ef293fa0152079d1917a
+size 1208321720
diff --git a/model-00084-of-00126.safetensors b/model-00084-of-00126.safetensors
new file mode 100644
index 0000000..e26af4d
--- /dev/null
+++ b/model-00084-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d75984a34b3ecce1e7474a1e14a6c70ccab966c71c1d23b36af2bb1e3395c3f1
+size 2463870000
diff --git a/model-00085-of-00126.safetensors b/model-00085-of-00126.safetensors
new file mode 100644
index 0000000..facbd1d
--- /dev/null
+++ b/model-00085-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b2eba76847b211cd7b7f4b06f7daad70895feef96715e5ed32e93de60ea9d31
+size 1208321720
diff --git a/model-00086-of-00126.safetensors b/model-00086-of-00126.safetensors
new file mode 100644
index 0000000..214c37d
--- /dev/null
+++ b/model-00086-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11dae93ccfd275b521087cc258dfda7ba552c9ee7300e532ea252c6a681b898b
+size 2463870000
diff --git a/model-00087-of-00126.safetensors b/model-00087-of-00126.safetensors
new file mode 100644
index 0000000..00fd572
--- /dev/null
+++ b/model-00087-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4a8cedcb24fc94699ac778e3601b33de9b52c9f3d643fd5c1baf7fdd629dcbc
+size 1208321720
diff --git a/model-00088-of-00126.safetensors b/model-00088-of-00126.safetensors
new file mode 100644
index 0000000..42beca9
--- /dev/null
+++ b/model-00088-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d73ee97514e4cc647eadc120c62f02fc948d1bbb1aaae7d0c8ba36f7f990289b
+size 2463870000
diff --git a/model-00089-of-00126.safetensors b/model-00089-of-00126.safetensors
new file mode 100644
index 0000000..fbc8a75
--- /dev/null
+++ b/model-00089-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9fbff7002f152637839bddcf0060d5d3156f9eaf72611d0df55906e89295548
+size 1208321720
diff --git a/model-00090-of-00126.safetensors b/model-00090-of-00126.safetensors
new file mode 100644
index 0000000..a42b202
--- /dev/null
+++ b/model-00090-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9d32641816e5d8dbb3e8891e0a2b3bfd118a5365d63d2fc5c821b525283f7734
+size 2463870000
diff --git a/model-00091-of-00126.safetensors b/model-00091-of-00126.safetensors
new file mode 100644
index 0000000..ced8755
--- /dev/null
+++ b/model-00091-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9bde7f0d79574294a8306edd8357fbc9dd1df4427a1e478fba55bb6612bbb32
+size 1208321720
diff --git a/model-00092-of-00126.safetensors b/model-00092-of-00126.safetensors
new file mode 100644
index 0000000..eb54495
--- /dev/null
+++ b/model-00092-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f34412829a54c5a050b0ed1294b7f4ff5d871aaf7d298df9fadf98b89e97b938
+size 2463870000
diff --git a/model-00093-of-00126.safetensors b/model-00093-of-00126.safetensors
new file mode 100644
index 0000000..985981f
--- /dev/null
+++ b/model-00093-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e52d2a9b5f6e92bb88c816ff4cb7821796e3b64e906f7382827972a549fbcc9b
+size 1208321720
diff --git a/model-00094-of-00126.safetensors b/model-00094-of-00126.safetensors
new file mode 100644
index 0000000..65afb41
--- /dev/null
+++ b/model-00094-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf9960836e89f7fd437674f8fac66e4e77c0dce861f745ca17eb292f03c32ef7
+size 2463870000
diff --git a/model-00095-of-00126.safetensors b/model-00095-of-00126.safetensors
new file mode 100644
index 0000000..ee2ed8b
--- /dev/null
+++ b/model-00095-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a84cc16b89314f1c023827450ece593d4af3b96eaeeecca8d7e3b2ab969f7a9f
+size 1208321720
diff --git a/model-00096-of-00126.safetensors b/model-00096-of-00126.safetensors
new file mode 100644
index 0000000..17d8c9c
--- /dev/null
+++ b/model-00096-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:30573a909490be0be43af97970fa83994c44a88a092060a49b34c8e8d0926cc9
+size 2463870000
diff --git a/model-00097-of-00126.safetensors b/model-00097-of-00126.safetensors
new file mode 100644
index 0000000..de38875
--- /dev/null
+++ b/model-00097-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:078119bcab4891536ff4dfafadd8723a97ab97c394d6545a1a8870683c6c50f6
+size 1208321720
diff --git a/model-00098-of-00126.safetensors b/model-00098-of-00126.safetensors
new file mode 100644
index 0000000..25339bd
--- /dev/null
+++ b/model-00098-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:698200ed0f6d779c11ae52ea5b8107a3cc4a8b5b17bf51aeb7dec4eea498b39c
+size 2463870000
diff --git a/model-00099-of-00126.safetensors b/model-00099-of-00126.safetensors
new file mode 100644
index 0000000..4a96cbe
--- /dev/null
+++ b/model-00099-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1eab1042dcfe9cc0529db8e39cd5d0c8adc5f9246a34033caab93ce5ab4ddc68
+size 1208321720
diff --git a/model-00100-of-00126.safetensors b/model-00100-of-00126.safetensors
new file mode 100644
index 0000000..d5f6448
--- /dev/null
+++ b/model-00100-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:21889ceb440807ac15d1d849a4ffedfac112aef46d6d688b18df027d53f2011c
+size 2463870000
diff --git a/model-00101-of-00126.safetensors b/model-00101-of-00126.safetensors
new file mode 100644
index 0000000..ab021e5
--- /dev/null
+++ b/model-00101-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5caa04c4f2d9bc940321caaae9bd9a61b332fe9e133687c1490b902231b7c1cb
+size 1208321720
diff --git a/model-00102-of-00126.safetensors b/model-00102-of-00126.safetensors
new file mode 100644
index 0000000..b39070b
--- /dev/null
+++ b/model-00102-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b774cf9603d510a9f8cf6ee2bd6e19f3c391c5b768c6e67ef5b90a09bb99d026
+size 2463870000
diff --git a/model-00103-of-00126.safetensors b/model-00103-of-00126.safetensors
new file mode 100644
index 0000000..0026a98
--- /dev/null
+++ b/model-00103-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf0175d241da56233db656b0f1c3b95d9034d4d29e8b15df7f46a81f13e52ec3
+size 1208321720
diff --git a/model-00104-of-00126.safetensors b/model-00104-of-00126.safetensors
new file mode 100644
index 0000000..9f04aba
--- /dev/null
+++ b/model-00104-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3aca43a9a6a2cae95f452c65f0bcf917d4fc1a48ef737441910ac6e54ab95206
+size 2463870000
diff --git a/model-00105-of-00126.safetensors b/model-00105-of-00126.safetensors
new file mode 100644
index 0000000..4781d84
--- /dev/null
+++ b/model-00105-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4e2fa5541242d757c05554c15fd88d2c56f47f329aa93a21603ce19c58ef2e7a
+size 1208321720
diff --git a/model-00106-of-00126.safetensors b/model-00106-of-00126.safetensors
new file mode 100644
index 0000000..9a20531
--- /dev/null
+++ b/model-00106-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9783bb745a26d818e51fb24a87a18b678a542f24b14162e60f7b3881226ea2d0
+size 2463870000
diff --git a/model-00107-of-00126.safetensors b/model-00107-of-00126.safetensors
new file mode 100644
index 0000000..fd95ace
--- /dev/null
+++ b/model-00107-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b51cd8f911ca5f2b58a6ef43485c0203dcbc7873fb859794ded362c017b9c4f
+size 1208321720
diff --git a/model-00108-of-00126.safetensors b/model-00108-of-00126.safetensors
new file mode 100644
index 0000000..30dc6fa
--- /dev/null
+++ b/model-00108-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c29432f100fab7475e2b6d7b0be5b41bbad05d406ba3cf99bdbbb49e3ec43057
+size 2463870000
diff --git a/model-00109-of-00126.safetensors b/model-00109-of-00126.safetensors
new file mode 100644
index 0000000..5fb52a8
--- /dev/null
+++ b/model-00109-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0094b95cc9554e13798126031cc53a42ae7595b00f2bcafbb5492632d8cb5f72
+size 1208321720
diff --git a/model-00110-of-00126.safetensors b/model-00110-of-00126.safetensors
new file mode 100644
index 0000000..5ba296a
--- /dev/null
+++ b/model-00110-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b53f9d339d8fda379ba988f10c0ada74ea041cc47ad315d0df97a1b0e166852d
+size 2463870000
diff --git a/model-00111-of-00126.safetensors b/model-00111-of-00126.safetensors
new file mode 100644
index 0000000..24cffd3
--- /dev/null
+++ b/model-00111-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c8fdcde1f909bb2fc37dc7e384c5791d6c4659cc38b878c6a50966c2de57369
+size 1208321720
diff --git a/model-00112-of-00126.safetensors b/model-00112-of-00126.safetensors
new file mode 100644
index 0000000..066cc67
--- /dev/null
+++ b/model-00112-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f6bc93d313b4a2fa17a45ca3e2a3d80aa41e58d4a001c9e5088eefd326cfa70c
+size 2463870000
diff --git a/model-00113-of-00126.safetensors b/model-00113-of-00126.safetensors
new file mode 100644
index 0000000..70c1860
--- /dev/null
+++ b/model-00113-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc0175e5bc082f95214c1ba9abe7fafb5493b791dd1bb79845a888f5b113143c
+size 1208321720
diff --git a/model-00114-of-00126.safetensors b/model-00114-of-00126.safetensors
new file mode 100644
index 0000000..a83fca7
--- /dev/null
+++ b/model-00114-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd9b77f047f5b0f6f3fc2c09e292909252b86574950d281afaf27b5f40a434d4
+size 2463870000
diff --git a/model-00115-of-00126.safetensors b/model-00115-of-00126.safetensors
new file mode 100644
index 0000000..91dac80
--- /dev/null
+++ b/model-00115-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b36aa5e54842b947f316d5de27e7e525d0e988b2028fc4f4d9fd427e11460de4
+size 1208321720
diff --git a/model-00116-of-00126.safetensors b/model-00116-of-00126.safetensors
new file mode 100644
index 0000000..1fc0d56
--- /dev/null
+++ b/model-00116-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:607a727267084d34d5a85be14b45de092bbb1e2f5b329202fd8b8418b11bd78e
+size 2463870000
diff --git a/model-00117-of-00126.safetensors b/model-00117-of-00126.safetensors
new file mode 100644
index 0000000..2258bca
--- /dev/null
+++ b/model-00117-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f78613a20752964c42c1965c2132a7f3169fb5e3fe99798a60439fa150f5b6a
+size 1208321720
diff --git a/model-00118-of-00126.safetensors b/model-00118-of-00126.safetensors
new file mode 100644
index 0000000..2c978ef
--- /dev/null
+++ b/model-00118-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23a70919051f397f14ca3e0f84be4cf93e1c07caccd8ef424621af04d0bb3fd0
+size 2463870000
diff --git a/model-00119-of-00126.safetensors b/model-00119-of-00126.safetensors
new file mode 100644
index 0000000..1ede289
--- /dev/null
+++ b/model-00119-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:318743f13194252056ca93f1af5f899a456474ff52a3ad73a6215b0353e0defb
+size 1208321720
diff --git a/model-00120-of-00126.safetensors b/model-00120-of-00126.safetensors
new file mode 100644
index 0000000..a872b2b
--- /dev/null
+++ b/model-00120-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:329dbf9b2344e2400b92e12aac1db15c25701e0ea7044c55b4ff19125cf27ba3
+size 2463870000
diff --git a/model-00121-of-00126.safetensors b/model-00121-of-00126.safetensors
new file mode 100644
index 0000000..4a930d2
--- /dev/null
+++ b/model-00121-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9d73640ba0e6f44576c7e7e66c9a2cd740b83d793f4b5ffca0a1048e4b3bc4a
+size 1208321720
diff --git a/model-00122-of-00126.safetensors b/model-00122-of-00126.safetensors
new file mode 100644
index 0000000..eccf228
--- /dev/null
+++ b/model-00122-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9f2a90b7a4b1ac3217914db35c0d53ca80af5f0b3c78d028392d57714c39ad7
+size 2463870000
diff --git a/model-00123-of-00126.safetensors b/model-00123-of-00126.safetensors
new file mode 100644
index 0000000..601a490
--- /dev/null
+++ b/model-00123-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92353e5a4a2801b68c73aebe1b5cefb5fedd01b1e6dcdde48675433b212c6c26
+size 1208321720
diff --git a/model-00124-of-00126.safetensors b/model-00124-of-00126.safetensors
new file mode 100644
index 0000000..b6b7114
--- /dev/null
+++ b/model-00124-of-00126.safetensors
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0eb359834853ba21d8c4ef8632084539e5beb1fd7dfa1d3d03566af3b63d471f
+size 1229199552
diff --git a/model.safetensors.index.json b/model.safetensors.index.json
new file mode 100644
index 0000000..ffa00bd
--- /dev/null
+++ b/model.safetensors.index.json
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13268f1c512163d7b1b482e1307fcf7c6565d4a9109861af9612e1b4f0c96c49
+size 9829062
diff --git a/modeling_minimax_m2.py b/modeling_minimax_m2.py
new file mode 100644
index 0000000..8846d38
--- /dev/null
+++ b/modeling_minimax_m2.py
@@ -0,0 +1,706 @@
+# 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
+# This file was automatically generated from src/transformers/models/minimax_m2/modular_minimax_m2.py.
+# Do NOT edit this file manually as any edits will be overwritten by the generation of
+# the file from the modular. If any change should be done, please apply the change to the
+# modular_minimax_m2.py file directly. One of our CI enforces this.
+# 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
+# coding=utf-8
+# Copyright 2025 the HuggingFace Team. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+from collections.abc import Callable
+from typing import Optional, Union, Unpack
+
+import torch
+from torch import nn
+
+from transformers.activations import ACT2FN
+from transformers.cache_utils import Cache, DynamicCache
+from transformers.generation import GenerationMixin
+from transformers.integrations import use_kernel_forward_from_hub
+from transformers.masking_utils import create_causal_mask, create_sliding_window_causal_mask
+from transformers.modeling_flash_attention_utils import FlashAttentionKwargs
+from transformers.modeling_layers import (
+ GenericForQuestionAnswering,
+ GenericForSequenceClassification,
+ GenericForTokenClassification,
+ GradientCheckpointingLayer,
+)
+from transformers.modeling_outputs import MoeCausalLMOutputWithPast, MoeModelOutputWithPast
+from transformers.modeling_rope_utils import ROPE_INIT_FUNCTIONS, dynamic_rope_update
+from transformers.modeling_utils import ALL_ATTENTION_FUNCTIONS, PreTrainedModel
+from transformers.utils import TransformersKwargs, auto_docstring, can_return_tuple
+from transformers.utils.deprecation import deprecate_kwarg
+from transformers.utils.generic import OutputRecorder, check_model_inputs
+from .configuration_minimax_m2 import MiniMaxM2Config
+
+
+class MiniMaxM2MLP(nn.Module):
+ def __init__(self, config: MiniMaxM2Config):
+ super().__init__()
+ self.ffn_dim = config.intermediate_size
+ self.hidden_dim = config.hidden_size
+
+ self.w1 = nn.Linear(self.hidden_dim, self.ffn_dim, bias=False)
+ self.w2 = nn.Linear(self.ffn_dim, self.hidden_dim, bias=False)
+ self.w3 = nn.Linear(self.hidden_dim, self.ffn_dim, bias=False)
+
+ self.act_fn = ACT2FN[config.hidden_act]
+
+ def forward(self, hidden_states):
+ current_hidden_states = self.act_fn(self.w1(hidden_states)) * self.w3(hidden_states)
+ current_hidden_states = self.w2(current_hidden_states)
+ return current_hidden_states
+
+
+class MiniMaxM2Experts(nn.ModuleList):
+ """
+ ModuleList of experts.
+ """
+
+ def __init__(self, config: MiniMaxM2Config):
+ super().__init__()
+ self.top_k = config.num_experts_per_tok
+ self.num_experts = config.num_local_experts
+ for _ in range(self.num_experts):
+ self.append(MiniMaxM2MLP(config))
+
+ def forward(
+ self, hidden_states: torch.Tensor, top_k_index: torch.Tensor, top_k_weights: torch.Tensor
+ ) -> torch.Tensor:
+ """
+ Args:
+ hidden_states: (batch_size * sequence_length, hidden_dim)
+ selected_experts: (batch_size * sequence_length, top_k)
+ routing_weights: (batch_size * sequence_length, top_k)
+ Returns:
+ (batch_size * sequence_length, hidden_dim)
+ """
+ final_hidden_states = torch.zeros_like(hidden_states)
+ expert_mask = torch.nn.functional.one_hot(top_k_index, num_classes=self.num_experts).permute(2, 1, 0)
+
+ expert_hit = torch.greater(expert_mask.sum(dim=(-1, -2)), 0).nonzero()
+ for expert_idx in expert_hit:
+ idx, top_x = torch.where(expert_mask[expert_idx].squeeze(0))
+ current_state = hidden_states[None, top_x].reshape(-1, hidden_states.shape[-1])
+ current_hidden_states = self[expert_idx](current_state) * top_k_weights[top_x, idx, None]
+ final_hidden_states.index_add_(0, top_x, current_hidden_states.to(hidden_states.dtype))
+ return final_hidden_states
+
+
+class MiniMaxM2SparseMoeBlock(nn.Module):
+ def __init__(self, config):
+ super().__init__()
+ self.top_k = config.num_experts_per_tok
+ self.jitter_noise = config.router_jitter_noise
+ self.gate = nn.Linear(config.hidden_size, config.num_local_experts, bias=False)
+ self.experts = MiniMaxM2Experts(config)
+ self.register_buffer("e_score_correction_bias", torch.zeros(config.num_local_experts))
+
+ def route_tokens_to_experts(self, router_logits):
+ routing_weights = torch.nn.functional.sigmoid(router_logits.float())
+ scores_for_choice = routing_weights + self.e_score_correction_bias
+ _, top_k_index = torch.topk(scores_for_choice, self.top_k, dim=-1, sorted=False)
+ top_k_weights = routing_weights.gather(1, top_k_index)
+ top_k_weights /= top_k_weights.sum(dim=-1, keepdim=True)
+ return top_k_index, top_k_weights.to(router_logits.dtype)
+
+ def forward(self, hidden_states: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:
+ batch_size, sequence_length, hidden_dim = hidden_states.shape
+ if self.training and self.jitter_noise > 0:
+ hidden_states *= torch.empty_like(hidden_states).uniform_(1.0 - self.jitter_noise, 1.0 + self.jitter_noise)
+ hidden_states = hidden_states.view(-1, hidden_states.shape[-1])
+ router_logits = self.gate(hidden_states)
+ top_k_index, top_k_weights = self.route_tokens_to_experts(router_logits)
+ hidden_states = self.experts(hidden_states, top_k_index, top_k_weights.to(hidden_states.dtype))
+ hidden_states = hidden_states.reshape(batch_size, sequence_length, hidden_dim)
+ return hidden_states, router_logits
+
+
+@use_kernel_forward_from_hub("RMSNorm")
+class MiniMaxM2RMSNorm(nn.Module):
+ def __init__(self, hidden_size, eps=1e-6):
+ """
+ MiniMaxM2RMSNorm is equivalent to T5LayerNorm
+ """
+ super().__init__()
+ self.weight = nn.Parameter(torch.ones(hidden_size))
+ self.variance_epsilon = eps
+
+ def forward(self, hidden_states):
+ input_dtype = hidden_states.dtype
+ hidden_states = hidden_states.to(torch.float32)
+ variance = hidden_states.pow(2).mean(-1, keepdim=True)
+ hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon)
+ return self.weight * hidden_states.to(input_dtype)
+
+ def extra_repr(self):
+ return f"{tuple(self.weight.shape)}, eps={self.variance_epsilon}"
+
+
+def repeat_kv(hidden_states: torch.Tensor, n_rep: int) -> torch.Tensor:
+ """
+ This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
+ num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
+ """
+ batch, num_key_value_heads, slen, head_dim = hidden_states.shape
+ if n_rep == 1:
+ return hidden_states
+ hidden_states = hidden_states[:, :, None, :, :].expand(batch, num_key_value_heads, n_rep, slen, head_dim)
+ return hidden_states.reshape(batch, num_key_value_heads * n_rep, slen, head_dim)
+
+
+def eager_attention_forward(
+ module: nn.Module,
+ query: torch.Tensor,
+ key: torch.Tensor,
+ value: torch.Tensor,
+ attention_mask: Optional[torch.Tensor],
+ scaling: float,
+ dropout: float = 0.0,
+ **kwargs: Unpack[TransformersKwargs],
+):
+ key_states = repeat_kv(key, module.num_key_value_groups)
+ value_states = repeat_kv(value, module.num_key_value_groups)
+
+ attn_weights = torch.matmul(query, key_states.transpose(2, 3)) * scaling
+ if attention_mask is not None:
+ causal_mask = attention_mask[:, :, :, : key_states.shape[-2]]
+ attn_weights = attn_weights + causal_mask
+
+ attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query.dtype)
+ attn_weights = nn.functional.dropout(attn_weights, p=dropout, training=module.training)
+ attn_output = torch.matmul(attn_weights, value_states)
+ attn_output = attn_output.transpose(1, 2).contiguous()
+
+ return attn_output, attn_weights
+
+
+def rotate_half(x):
+ """Rotates half the hidden dims of the input."""
+ x1 = x[..., : x.shape[-1] // 2]
+ x2 = x[..., x.shape[-1] // 2 :]
+ return torch.cat((-x2, x1), dim=-1)
+
+
+def apply_rotary_pos_emb(q, k, cos, sin, position_ids=None, unsqueeze_dim=1):
+ """Applies Rotary Position Embedding to the query and key tensors.
+
+ Args:
+ q (`torch.Tensor`): The query tensor.
+ k (`torch.Tensor`): The key tensor.
+ cos (`torch.Tensor`): The cosine part of the rotary embedding.
+ sin (`torch.Tensor`): The sine part of the rotary embedding.
+ position_ids (`torch.Tensor`, *optional*):
+ Deprecated and unused.
+ unsqueeze_dim (`int`, *optional*, defaults to 1):
+ The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
+ sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
+ that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
+ k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
+ cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
+ the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
+ Returns:
+ `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
+ """
+ cos = cos.unsqueeze(unsqueeze_dim)
+ sin = sin.unsqueeze(unsqueeze_dim)
+
+ # Keep half or full tensor for later concatenation
+ rotary_dim = cos.shape[-1]
+ q_rot, q_pass = q[..., :rotary_dim], q[..., rotary_dim:]
+ k_rot, k_pass = k[..., :rotary_dim], k[..., rotary_dim:]
+
+ # Apply rotary embeddings on the first half or full tensor
+ q_embed = (q_rot * cos) + (rotate_half(q_rot) * sin)
+ k_embed = (k_rot * cos) + (rotate_half(k_rot) * sin)
+
+ # Concatenate back to full shape
+ q_embed = torch.cat([q_embed, q_pass], dim=-1)
+ k_embed = torch.cat([k_embed, k_pass], dim=-1)
+ return q_embed, k_embed
+
+
+class MiniMaxM2Attention(nn.Module):
+ """Multi-headed attention from 'Attention Is All You Need' paper"""
+
+ def __init__(self, config: MiniMaxM2Config, layer_idx: int):
+ super().__init__()
+ self.config = config
+ self.layer_idx = layer_idx
+ self.head_dim = getattr(config, "head_dim", None) or config.hidden_size // config.num_attention_heads
+ self.num_key_value_groups = config.num_attention_heads // config.num_key_value_heads
+ self.scaling = self.head_dim**-0.5
+ self.attention_dropout = config.attention_dropout
+ self.is_causal = True
+ self.q_proj = nn.Linear(config.hidden_size, config.num_attention_heads * self.head_dim, bias=False)
+ self.k_proj = nn.Linear(config.hidden_size, config.num_key_value_heads * self.head_dim, bias=False)
+ self.v_proj = nn.Linear(config.hidden_size, config.num_key_value_heads * self.head_dim, bias=False)
+ self.o_proj = nn.Linear(config.num_attention_heads * self.head_dim, config.hidden_size, bias=False)
+
+ self.use_qk_norm = config.use_qk_norm
+ if self.use_qk_norm:
+ self.q_norm = MiniMaxM2RMSNorm(self.head_dim * config.num_attention_heads, eps=config.rms_norm_eps)
+ self.k_norm = MiniMaxM2RMSNorm(self.head_dim * config.num_key_value_heads, eps=config.rms_norm_eps)
+
+ @deprecate_kwarg("past_key_value", new_name="past_key_values", version="4.58")
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ position_embeddings: tuple[torch.Tensor, torch.Tensor],
+ attention_mask: Optional[torch.Tensor],
+ past_key_values: Optional[Cache] = None,
+ cache_position: Optional[torch.LongTensor] = None,
+ **kwargs: Unpack[FlashAttentionKwargs],
+ ) -> tuple[torch.Tensor, Optional[torch.Tensor]]:
+ input_shape = hidden_states.shape[:-1]
+ hidden_shape = (*input_shape, -1, self.head_dim)
+
+ query_states = self.q_proj(hidden_states)
+ key_states = self.k_proj(hidden_states)
+ value_states = self.v_proj(hidden_states)
+
+ if self.use_qk_norm: # main diff from Llama
+ query_states = self.q_norm(query_states)
+ key_states = self.k_norm(key_states)
+
+ key_states = key_states.view(hidden_shape)
+ query_states = query_states.view(hidden_shape)
+ value_states = value_states.view(hidden_shape)
+
+ query_states = query_states.transpose(1, 2)
+ key_states = key_states.transpose(1, 2)
+ value_states = value_states.transpose(1, 2)
+
+ cos, sin = position_embeddings
+ query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin)
+
+ if past_key_values is not None:
+ # sin and cos are specific to RoPE models; position_ids needed for the static cache
+ cache_kwargs = {"sin": sin, "cos": cos, "cache_position": cache_position}
+ key_states, value_states = past_key_values.update(key_states, value_states, self.layer_idx, cache_kwargs)
+
+ attention_interface: Callable = eager_attention_forward
+ if self.config._attn_implementation != "eager":
+ attention_interface = ALL_ATTENTION_FUNCTIONS[self.config._attn_implementation]
+
+ attn_output, attn_weights = attention_interface(
+ self,
+ query_states,
+ key_states,
+ value_states,
+ attention_mask,
+ dropout=0.0 if not self.training else self.attention_dropout,
+ scaling=self.scaling,
+ **kwargs,
+ )
+
+ attn_output = attn_output.reshape(*input_shape, -1).contiguous()
+ attn_output = self.o_proj(attn_output)
+ return attn_output, attn_weights
+
+
+class MiniMaxM2DecoderLayer(GradientCheckpointingLayer):
+ def __init__(self, config: MiniMaxM2Config, layer_idx: int):
+ super().__init__()
+ self.hidden_size = config.hidden_size
+
+ self.self_attn = MiniMaxM2Attention(config, layer_idx)
+
+ self.block_sparse_moe = MiniMaxM2SparseMoeBlock(config)
+ self.input_layernorm = MiniMaxM2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
+ self.post_attention_layernorm = MiniMaxM2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
+
+ @deprecate_kwarg("past_key_value", new_name="past_key_values", version="4.58")
+ def forward(
+ self,
+ hidden_states: torch.Tensor,
+ position_embeddings: tuple[torch.Tensor, torch.Tensor],
+ attention_mask: Optional[torch.Tensor] = None,
+ position_ids: Optional[torch.LongTensor] = None,
+ past_key_values: Optional[Cache] = None,
+ cache_position: Optional[torch.LongTensor] = None,
+ **kwargs: Unpack[TransformersKwargs],
+ ) -> torch.FloatTensor:
+ residual = hidden_states
+
+ hidden_states = self.input_layernorm(hidden_states)
+
+ # Self Attention
+ hidden_states, _ = self.self_attn(
+ hidden_states=hidden_states,
+ position_embeddings=position_embeddings,
+ attention_mask=attention_mask,
+ position_ids=position_ids,
+ past_key_values=past_key_values,
+ cache_position=cache_position,
+ **kwargs,
+ )
+ hidden_states = residual + hidden_states
+
+ # Fully Connected
+ residual = hidden_states
+ hidden_states = self.post_attention_layernorm(hidden_states)
+ hidden_states, _ = self.block_sparse_moe(hidden_states)
+ hidden_states = residual + hidden_states
+
+ return hidden_states
+
+
+class MiniMaxM2RotaryEmbedding(nn.Module):
+ inv_freq: torch.Tensor # fix linting for `register_buffer`
+
+ def __init__(self, config: MiniMaxM2Config, device=None):
+ super().__init__()
+ # BC: "rope_type" was originally "type"
+ if hasattr(config, "rope_scaling") and isinstance(config.rope_scaling, dict):
+ self.rope_type = config.rope_scaling.get("rope_type", config.rope_scaling.get("type"))
+ else:
+ self.rope_type = "default"
+ self.max_seq_len_cached = config.max_position_embeddings
+ self.original_max_seq_len = config.max_position_embeddings
+
+ self.config = config
+ self.rope_init_fn = ROPE_INIT_FUNCTIONS[self.rope_type]
+
+ inv_freq, self.attention_scaling = self.rope_init_fn(self.config, device)
+ self.register_buffer("inv_freq", inv_freq, persistent=False)
+ self.original_inv_freq = self.inv_freq
+
+ @torch.no_grad()
+ @dynamic_rope_update # power user: used with advanced RoPE types (e.g. dynamic rope)
+ def forward(self, x, position_ids):
+ inv_freq_expanded = self.inv_freq[None, :, None].float().expand(position_ids.shape[0], -1, 1).to(x.device)
+ position_ids_expanded = position_ids[:, None, :].float()
+
+ device_type = x.device.type if isinstance(x.device.type, str) and x.device.type != "mps" else "cpu"
+ with torch.autocast(device_type=device_type, enabled=False): # Force float32
+ freqs = (inv_freq_expanded.float() @ position_ids_expanded.float()).transpose(1, 2)
+ emb = torch.cat((freqs, freqs), dim=-1)
+ cos = emb.cos() * self.attention_scaling
+ sin = emb.sin() * self.attention_scaling
+
+ return cos.to(dtype=x.dtype), sin.to(dtype=x.dtype)
+
+
+@auto_docstring
+class MiniMaxM2PreTrainedModel(PreTrainedModel):
+ config: MiniMaxM2Config
+ base_model_prefix = "model"
+ supports_gradient_checkpointing = True
+ _no_split_modules = ["MiniMaxM2DecoderLayer"]
+ _skip_keys_device_placement = ["past_key_values"]
+ _supports_flash_attn = True
+ _supports_sdpa = True
+ _supports_flex_attn = True
+ _can_compile_fullgraph = False # MoE models don't work with torch.compile (`torch.where(condition)` not supported)
+ _supports_attention_backend = True
+ _can_record_outputs = {
+ "router_logits": OutputRecorder(MiniMaxM2SparseMoeBlock, index=1),
+ "hidden_states": MiniMaxM2DecoderLayer,
+ "attentions": MiniMaxM2Attention,
+ }
+
+
+@auto_docstring
+class MiniMaxM2Model(MiniMaxM2PreTrainedModel):
+ def __init__(self, config: MiniMaxM2Config):
+ super().__init__(config)
+ self.padding_idx = config.pad_token_id
+ self.vocab_size = config.vocab_size
+
+ self.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size, self.padding_idx)
+ self.layers = nn.ModuleList(
+ [MiniMaxM2DecoderLayer(config, layer_idx) for layer_idx in range(config.num_hidden_layers)]
+ )
+ self.norm = MiniMaxM2RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
+ self.rotary_emb = MiniMaxM2RotaryEmbedding(config=config)
+ self.gradient_checkpointing = False
+
+ # Initialize weights and apply final processing
+ self.post_init()
+
+ @check_model_inputs
+ @auto_docstring
+ def forward(
+ self,
+ input_ids: Optional[torch.LongTensor] = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ position_ids: Optional[torch.LongTensor] = None,
+ past_key_values: Optional[Cache] = None,
+ inputs_embeds: Optional[torch.FloatTensor] = None,
+ use_cache: Optional[bool] = None,
+ cache_position: Optional[torch.LongTensor] = None,
+ **kwargs: Unpack[TransformersKwargs],
+ ) -> MoeModelOutputWithPast:
+ if (input_ids is None) ^ (inputs_embeds is not None):
+ raise ValueError("You must specify exactly one of input_ids or inputs_embeds")
+
+ if use_cache and past_key_values is None:
+ past_key_values = DynamicCache(config=self.config)
+
+ if inputs_embeds is None:
+ inputs_embeds = self.embed_tokens(input_ids)
+
+ if cache_position is None:
+ past_seen_tokens = past_key_values.get_seq_length() if past_key_values is not None else 0
+ cache_position = torch.arange(
+ past_seen_tokens, past_seen_tokens + inputs_embeds.shape[1], device=inputs_embeds.device
+ )
+ if position_ids is None:
+ position_ids = cache_position.unsqueeze(0)
+
+ mask_function = create_causal_mask if self.config.sliding_window is None else create_sliding_window_causal_mask
+ causal_mask = mask_function(
+ config=self.config,
+ input_embeds=inputs_embeds,
+ attention_mask=attention_mask,
+ cache_position=cache_position,
+ past_key_values=past_key_values,
+ position_ids=position_ids,
+ )
+
+ hidden_states = inputs_embeds
+
+ # create position embeddings to be shared across the decoder layers
+ position_embeddings = self.rotary_emb(hidden_states, position_ids)
+
+ for decoder_layer in self.layers[: self.config.num_hidden_layers]:
+ hidden_states = decoder_layer(
+ hidden_states,
+ position_embeddings=position_embeddings,
+ attention_mask=causal_mask,
+ position_ids=position_ids,
+ past_key_values=past_key_values,
+ use_cache=use_cache,
+ cache_position=cache_position,
+ **kwargs,
+ )
+
+ hidden_states = self.norm(hidden_states)
+
+ return MoeModelOutputWithPast( # only diff with Mistral is the output type, we need MoE
+ last_hidden_state=hidden_states,
+ past_key_values=past_key_values,
+ )
+
+
+def load_balancing_loss_func(
+ gate_logits: Union[torch.Tensor, tuple[torch.Tensor], None],
+ num_experts: Optional[int] = None,
+ top_k=2,
+ attention_mask: Optional[torch.Tensor] = None,
+) -> Union[torch.Tensor, int]:
+ r"""
+ Computes auxiliary load balancing loss as in Switch Transformer - implemented in Pytorch.
+
+ See Switch Transformer (https://huggingface.co/papers/2101.03961) for more details. This function implements the loss
+ function presented in equations (4) - (6) of the paper. It aims at penalizing cases where the routing between
+ experts is too unbalanced.
+
+ Args:
+ gate_logits:
+ Logits from the `gate`, should be a tuple of model.config.num_hidden_layers tensors of
+ shape [batch_size X sequence_length, num_experts].
+ num_experts:
+ Number of experts
+ top_k:
+ The number of experts to route per-token, can be also interpreted as the `top-k` routing
+ parameter.
+ attention_mask (`torch.Tensor`, *optional*):
+ The attention_mask used in forward function
+ shape [batch_size X sequence_length] if not None.
+
+ Returns:
+ The auxiliary loss.
+ """
+ if gate_logits is None or not isinstance(gate_logits, tuple):
+ return 0
+
+ if isinstance(gate_logits, tuple):
+ compute_device = gate_logits[0].device
+ concatenated_gate_logits = torch.cat([layer_gate.to(compute_device) for layer_gate in gate_logits], dim=0)
+
+ routing_weights = torch.nn.functional.softmax(concatenated_gate_logits, dim=-1)
+
+ _, selected_experts = torch.topk(routing_weights, top_k, dim=-1)
+
+ expert_mask = torch.nn.functional.one_hot(selected_experts, num_experts)
+
+ if attention_mask is None:
+ # Compute the percentage of tokens routed to each experts
+ tokens_per_expert = torch.mean(expert_mask.float(), dim=0)
+
+ # Compute the average probability of routing to these experts
+ router_prob_per_expert = torch.mean(routing_weights, dim=0)
+ else:
+ batch_size, sequence_length = attention_mask.shape
+ num_hidden_layers = concatenated_gate_logits.shape[0] // (batch_size * sequence_length)
+
+ # Compute the mask that masks all padding tokens as 0 with the same shape of expert_mask
+ expert_attention_mask = (
+ attention_mask[None, :, :, None, None]
+ .expand((num_hidden_layers, batch_size, sequence_length, top_k, num_experts))
+ .reshape(-1, top_k, num_experts)
+ .to(compute_device)
+ )
+
+ # Compute the percentage of tokens routed to each experts
+ tokens_per_expert = torch.sum(expert_mask.float() * expert_attention_mask, dim=0) / torch.sum(
+ expert_attention_mask, dim=0
+ )
+
+ # Compute the mask that masks all padding tokens as 0 with the same shape of tokens_per_expert
+ router_per_expert_attention_mask = (
+ attention_mask[None, :, :, None]
+ .expand((num_hidden_layers, batch_size, sequence_length, num_experts))
+ .reshape(-1, num_experts)
+ .to(compute_device)
+ )
+
+ # Compute the average probability of routing to these experts
+ router_prob_per_expert = torch.sum(routing_weights * router_per_expert_attention_mask, dim=0) / torch.sum(
+ router_per_expert_attention_mask, dim=0
+ )
+
+ overall_loss = torch.sum(tokens_per_expert * router_prob_per_expert.unsqueeze(0))
+ return overall_loss * num_experts
+
+
+@auto_docstring
+class MiniMaxM2ForCausalLM(MiniMaxM2PreTrainedModel, GenerationMixin):
+ _tied_weights_keys = ["lm_head.weight"]
+ _tp_plan = {"lm_head": "colwise_rep"}
+ _pp_plan = {"lm_head": (["hidden_states"], ["logits"])}
+
+ def __init__(self, config):
+ super().__init__(config)
+ self.model = MiniMaxM2Model(config)
+ self.vocab_size = config.vocab_size
+ self.lm_head = nn.Linear(config.hidden_size, config.vocab_size, bias=False)
+ self.router_aux_loss_coef = config.router_aux_loss_coef
+ self.num_experts = config.num_local_experts
+ self.num_experts_per_tok = config.num_experts_per_tok
+
+ # Initialize weights and apply final processing
+ self.post_init()
+
+ @can_return_tuple
+ @auto_docstring
+ def forward(
+ self,
+ input_ids: Optional[torch.LongTensor] = None,
+ attention_mask: Optional[torch.Tensor] = None,
+ position_ids: Optional[torch.LongTensor] = None,
+ past_key_values: Optional[Cache] = None,
+ inputs_embeds: Optional[torch.FloatTensor] = None,
+ labels: Optional[torch.LongTensor] = None,
+ use_cache: Optional[bool] = None,
+ output_router_logits: Optional[bool] = None,
+ cache_position: Optional[torch.LongTensor] = None,
+ logits_to_keep: Union[int, torch.Tensor] = 0,
+ **kwargs: Unpack[TransformersKwargs],
+ ) -> MoeCausalLMOutputWithPast:
+ r"""
+ labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
+ Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
+ config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
+ (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
+
+ Example:
+
+ ```python
+ >>> from transformers import AutoTokenizer, MiniMaxM2ForCausalLM
+
+ >>> model = MiniMaxM2ForCausalLM.from_pretrained("mistralai/MiniMaxM2-8x7B-v0.1")
+ >>> tokenizer = AutoTokenizer.from_pretrained("mistralai/MiniMaxM2-8x7B-v0.1")
+
+ >>> prompt = "Hey, are you conscious? Can you talk to me?"
+ >>> inputs = tokenizer(prompt, return_tensors="pt")
+
+ >>> # Generate
+ >>> generate_ids = model.generate(inputs.input_ids, max_length=30)
+ >>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
+ "Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
+ ```"""
+
+ output_router_logits = (
+ output_router_logits if output_router_logits is not None else self.config.output_router_logits
+ )
+
+ # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)
+ outputs: MoeModelOutputWithPast = self.model(
+ input_ids=input_ids,
+ attention_mask=attention_mask,
+ position_ids=position_ids,
+ past_key_values=past_key_values,
+ inputs_embeds=inputs_embeds,
+ use_cache=use_cache,
+ output_router_logits=output_router_logits,
+ cache_position=cache_position,
+ **kwargs,
+ )
+
+ hidden_states = outputs.last_hidden_state
+ # Only compute necessary logits, and do not upcast them to float if we are not computing the loss
+ slice_indices = slice(-logits_to_keep, None) if isinstance(logits_to_keep, int) else logits_to_keep
+ logits = self.lm_head(hidden_states[:, slice_indices, :])
+
+ loss = None
+ if labels is not None:
+ loss = self.loss_function(logits, labels, self.vocab_size, **kwargs)
+
+ aux_loss = None
+ if output_router_logits:
+ aux_loss = load_balancing_loss_func(
+ outputs.router_logits,
+ self.num_experts,
+ self.num_experts_per_tok,
+ attention_mask,
+ )
+ if labels is not None:
+ loss += self.router_aux_loss_coef * aux_loss.to(loss.device) # make sure to reside in the same device
+
+ return MoeCausalLMOutputWithPast(
+ loss=loss,
+ aux_loss=aux_loss,
+ logits=logits,
+ past_key_values=outputs.past_key_values,
+ hidden_states=outputs.hidden_states,
+ attentions=outputs.attentions,
+ router_logits=outputs.router_logits,
+ )
+
+
+class MiniMaxM2ForSequenceClassification(GenericForSequenceClassification, MiniMaxM2PreTrainedModel):
+ pass
+
+
+class MiniMaxM2ForTokenClassification(GenericForTokenClassification, MiniMaxM2PreTrainedModel):
+ pass
+
+
+class MiniMaxM2ForQuestionAnswering(GenericForQuestionAnswering, MiniMaxM2PreTrainedModel):
+ pass
+
+
+__all__ = [
+ "MiniMaxM2ForCausalLM",
+ "MiniMaxM2ForQuestionAnswering",
+ "MiniMaxM2Model",
+ "MiniMaxM2PreTrainedModel",
+ "MiniMaxM2ForSequenceClassification",
+ "MiniMaxM2ForTokenClassification",
+]
diff --git a/tokenizer.json b/tokenizer.json
new file mode 100644
index 0000000..2c67e9d
--- /dev/null
+++ b/tokenizer.json
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:757622126525aeeb131756849d93298070ff3f0319c455ec8c5bb0f6b1cebbe8
+size 9730160
diff --git a/tokenizer_config.json b/tokenizer_config.json
new file mode 100644
index 0000000..ff8e2eb
--- /dev/null
+++ b/tokenizer_config.json
@@ -0,0 +1,495 @@
+{
+ "added_tokens_decoder": {
+ "200000": {
+ "content": "]!p~[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200001": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200002": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200003": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200004": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200005": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200006": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200007": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200008": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200009": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200010": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200011": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200012": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200013": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200014": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200015": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200016": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200017": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200018": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200019": {
+ "content": "]~b]",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200020": {
+ "content": "[e~[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200021": {
+ "content": "]!d~[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200022": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200023": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200024": {
+ "content": "]<]speech[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200025": {
+ "content": "]<]image[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200026": {
+ "content": "]<]video[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200027": {
+ "content": "]<]start of speech[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200028": {
+ "content": "]<]end of speech[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200029": {
+ "content": "]<]start of image[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200030": {
+ "content": "]<]end of image[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200031": {
+ "content": "]<]start of video[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200032": {
+ "content": "]<]end of video[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200033": {
+ "content": "]<]vision pad[>[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200034": {
+ "content": "]~!b[",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200035": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200036": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ "200037": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200038": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200039": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200040": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200041": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200042": {
+ "content": "",
+ "lstrip": false,
+ "normalized": false,
+ "rstrip": false,
+ "single_word": false,
+ "special": true
+ },
+ "200043": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ "200044": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ "200045": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ "200046": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ "200047": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ "200048": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ "200049": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": true
+ },
+ "200050": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": false
+ },
+ "200051": {
+ "content": " ",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": false
+ },
+ "200052": {
+ "content": "",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": false
+ },
+ "200053": {
+ "content": " ",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false,
+ "special": false
+ }
+ },
+ "additional_special_tokens": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "]<]speech[>[",
+ "]<]image[>[",
+ "]<]video[>[",
+ "]<]start of speech[>[",
+ "]<]end of speech[>[",
+ "]<]start of image[>[",
+ "]<]end of image[>[",
+ "]<]start of video[>[",
+ "]<]end of video[>[",
+ "]<]vision pad[>[",
+ "]~!b[",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "[e~[",
+ "]!d~[",
+ "]!p~[",
+ "]~b]",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "add_prefix_space": false,
+ "bos_token": "]~!b[",
+ "clean_up_tokenization_spaces": false,
+ "eos_token": "[e~[",
+ "model_max_length": 40960000,
+ "tokenizer_class": "GPT2Tokenizer",
+ "unk_token": "]!d~["
+}
diff --git a/vocab.json b/vocab.json
new file mode 100644
index 0000000..49a3e05
--- /dev/null
+++ b/vocab.json
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b44c066b5dc34c800c4e3ecbd85f3e95ce3bfdbf8a5fe30223e005175103578a
+size 4705413