Kimi K2.5 开源 发布代表了在民主化获取最先进AI方面的重要里程碑。与OpenAI和Anthropic的专有模型不同,月之暗面(Moonshot AI)以 开源权重 形式发布了 Kimi K2.5,采用改良版MIT许可证,使研究人员、开发者和企业能够按照自己的条款运行、修改和部署模型。
Kimi K2.5 开源概览
"开源"对 Kimi K2.5 意味着什么?
Kimi K2.5 作为 开源权重模型 发布,这意味着:
- ✅ 模型权重可公开下载
- ✅ 可在本地或私有基础设施上运行
- ✅ 允许微调和修改
- ✅ 允许商业使用(有限制)
- ✅ 无需API依赖
- ❌ 训练数据不公开
- ❌ 完整训练代码未发布
与其他"开源"模型对比
| 模型 | 开源权重 | 训练数据 | 商业使用 | 真正开源 |
|---|---|---|---|---|
| Kimi K2.5 | ✅ 是 | ❌ 否 | ✅ 改良版MIT | ⚠️ 部分 |
| Llama 3.1 | ✅ 是 | ❌ 否 | ✅ 是(有限制) | ⚠️ 部分 |
| Mistral | ✅ 是 | ❌ 否 | ✅ 是 | ⚠️ 部分 |
| GPT-4 | ❌ 否 | ❌ 否 | ❌ 仅API | ❌ 否 |
| Claude | ❌ 否 | ❌ 否 | ❌ 仅API | ❌ 否 |
Kimi K2.5 改良版MIT许可证详解
许可证概览
改良版MIT许可证 允许广泛的使用,同时对高流量商业部署包含一些限制。
您可以做什么
| 权限 | 详情 |
|---|---|
| 使用 | 个人、学术和商业使用 |
| 修改 | 微调和适配模型 |
| 分发 | 分享修改和衍生作品 |
| 私有使用 | 在私有基础设施上部署 |
| 再许可 | 包含在更大项目中 |
您不能做什么(限制)
| 限制 | 阈值 | 详情 |
|---|---|---|
| 署名展示要求 | >1亿月活或月收入>$2000万美元 | 必须在面向用户的产品/服务中显著展示“Kimi K2.5” |
| 有害使用 | 任何 | 武器、监控等 |
完整许可证文本
完整许可证可在以下地址查看: https://huggingface.co/moonshotai/Kimi-K2.5/blob/main/LICENSE
关键条款:
特此免费授予任何获得本模型副本和相关文档文件("模型")的人
无限制地处理本模型,包括但不限于使用、复制、修改、合并的权利
发布、分发、再许可和/或销售模型副本,但须遵守以下条件:
1. 如果您的产品/服务超过1亿月活用户
或月收入超过2000万美元,则必须在所有面向用户的产品/服务中
显著展示“Kimi K2.5”。
2. 仍需遵守标准 MIT 风格的版权与许可声明义务。下载 Kimi K2.5 权重
官方分发渠道
| 来源 | URL | 格式 |
|---|---|---|
| HuggingFace | huggingface.co/moonshotai/Kimi-K2.5 | PyTorch / Safetensors |
| ModelScope(魔搭) | modelscope.cn/models/MoonshotAI/Kimi-K2.5 | PyTorch |
下载方法
使用 HuggingFace Hub
from huggingface_hub import snapshot_download
# 下载完整模型
model_path = snapshot_download(
repo_id="moonshotai/Kimi-K2.5",
local_dir="./kimi-k2-5",
local_dir_use_symlinks=False,
resume_download=True
)使用 Git LFS
# 安装 Git LFS
git lfs install
# 克隆仓库
git clone https://huggingface.co/moonshotai/Kimi-K2.5.git
# 或稀疏检出特定文件
git clone --filter=blob:none https://huggingface.co/moonshotai/Kimi-K2.5.git使用 wget/curl
# 下载特定文件
wget https://huggingface.co/moonshotai/Kimi-K2.5/resolve/main/config.json
wget https://huggingface.co/moonshotai/Kimi-K2.5/resolve/main/model.safetensors.index.json模型文件结构
kimi-k2-5/
├── config.json # 模型配置
├── tokenizer.json # 分词器词汇表
├── tokenizer_config.json # 分词器设置
├── model.safetensors.index.json # 权重索引
├── model-00001-of-000064.safetensors # 分片1
├── model-00002-of-000064.safetensors # 分片2
├── ...
├── model-00064-of-000064.safetensors # 分片64
├── generation_config.json # 生成默认配置
└── LICENSE # 许可证文件自托管 Kimi K2.5
硬件需求
Moonshot 官方部署指南没有给出单一固定“最低配置”,而是提供了参考部署样例:
| 场景 | 官方示例 | 备注 |
|---|---|---|
| vLLM / SGLang 推理 | 单机 H200,张量并行 TP=8 | 来自 Moonshot 部署指南示例命令 |
| KTransformers + SGLang 推理 | 8x NVIDIA L20 + 2x Intel 6454S | CPU+GPU 异构推理示例 |
| KTransformers + LLaMA-Factory LoRA SFT | 2x RTX 4090 + Intel 8488C(大内存/交换) | 官方文档中的微调示例 |
部署选项
1. 使用 Transformers 本地部署
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# 加载模型
model = AutoModelForCausalLM.from_pretrained(
"./kimi-k2-5", # 本地路径
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
"./kimi-k2-5",
trust_remote_code=True
)
# 推理
inputs = tokenizer("你好,Kimi!", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))2. 使用 vLLM 生产部署
# 安装 vLLM
uv pip install -U vllm --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly
# 启动服务器
vllm serve ./kimi-k2-5 \
-tp 8 \
--mm-encoder-tp-mode data \
--trust-remote-code \
--tool-call-parser kimi_k2 \
--reasoning-parser kimi_k23. Docker 部署
FROM nvidia/cuda:12.1-devel-ubuntu22.04
WORKDIR /app
# 安装依赖
RUN pip install torch vllm transformers
# 复制模型(或挂载为卷)
COPY ./kimi-k2-5 /models/kimi-k2-5
# 暴露端口
EXPOSE 8000
# 启动服务器
CMD python -m vllm.entrypoints.openai.api_server \
--model /models/kimi-k2-5 \
--tensor-parallel-size 4 \
--host 0.0.0.0 \
--port 8000# 构建和运行
docker build -t kimi-k2-5 .
docker run --gpus all -p 8000:8000 kimi-k2-54. Kubernetes 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: kimi-k2-5
spec:
replicas: 1
selector:
matchLabels:
app: kimi-k2-5
template:
metadata:
labels:
app: kimi-k2-5
spec:
containers:
- name: vllm
image: vllm/vllm-openai:latest
args:
- --model
- /models/kimi-k2-5
- --tensor-parallel-size
- "4"
volumeMounts:
- name: model
mountPath: /models
resources:
limits:
nvidia.com/gpu: "4"
volumes:
- name: model
persistentVolumeClaim:
claimName: kimi-model-pvc云端部署选项
阿里云
# 使用GPU实例
aliyun ecs CreateInstance \
--InstanceType ecs.gn7i-c32g1.8xlarge \
--ImageId ubuntu_22_04_x64_gpu
# 部署到ACK
# 使用GPU优化实例腾讯云
# 使用GPU实例
tencentcloud cvm RunInstances \
--InstanceType GN7.8XLARGE128 \
--ImageId img-xxxAWS
# 使用Deep Learning AMI
aws ec2 run-instances \
--image-id ami-xxx \
--instance-type p4d.24xlarge \
--key-name my-key微调开源 Kimi K2.5
LoRA 微调
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, get_peft_model
import torch
# 加载基础模型
model = AutoModelForCausalLM.from_pretrained(
"./kimi-k2-5",
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
# 配置 LoRA
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
# 应用 LoRA
model = get_peft_model(model, lora_config)
# 训练配置
training_args = TrainingArguments(
output_dir="./kimi-k2-5-finetuned",
num_train_epochs=3,
per_device_train_batch_size=1,
gradient_accumulation_steps=4,
learning_rate=2e-4,
fp16=True,
save_steps=100
)
# 训练
from trl import SFTTrainer
trainer = SFTTrainer(
model=model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer
)
trainer.train()全量微调(需要大量资源)
# 全量微调,使用DeepSpeed或FSDP
from accelerate import Accelerator
accelerator = Accelerator(deepspeed_plugin=deepspeed_plugin)
model = AutoModelForCausalLM.from_pretrained(
"./kimi-k2-5",
trust_remote_code=True
)
# DeepSpeed配置用于分布式训练
# 需要8x H100或同等配置资源受限部署的量化
8-bit 量化
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
import torch
bnb_config = BitsAndBytesConfig(
load_in_8bit=True,
bnb_8bit_compute_dtype=torch.float16
)
model = AutoModelForCausalLM.from_pretrained(
"./kimi-k2-5",
quantization_config=bnb_config,
device_map="auto",
trust_remote_code=True
)4-bit 量化
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True
)
model = AutoModelForCausalLM.from_pretrained(
"./kimi-k2-5",
quantization_config=bnb_config,
device_map="auto",
trust_remote_code=True
)GGUF 格式(llama.cpp)
社区存在 GGUF 转换版本,但它们并非 Moonshot 官方发布:
# 社区示例仓库
# https://huggingface.co/unsloth/Kimi-K2.5-GGUF
# 使用前请先检查仓库中的可用文件/标签,再配置 llama.cpp开源社区
贡献
虽然基础模型权重是固定的,社区贡献包括:
- 微调变体:领域特定适配
- 量化版本:针对不同硬件优化
- 集成库:各种框架的SDK
- 部署工具:Kubernetes图表、Docker镜像
热门社区项目
| 项目 | 描述 | 链接 |
|---|---|---|
| MoonshotAI/Kimi-K2.5 | 官方代码仓库 | github.com/MoonshotAI/Kimi-K2.5 |
| moonshotai/Kimi-K2.5(HF) | 官方开源权重模型页与文件 | huggingface.co/moonshotai/Kimi-K2.5 |
| unsloth/Kimi-K2.5-GGUF | 社区 GGUF 转换示例 | huggingface.co/unsloth/Kimi-K2.5-GGUF |
| KTransformers 文档 | K2.5 部署与调优参考 | github.com/kvcache-ai/ktransformers |
合规和最佳实践
许可证合规清单
- 彻底审查改良版MIT许可证
- 如果提供公共服务,检查用户数
- 若转售托管 API 能力,先审查单独的 API 服务条款
- 在分发中包含许可证
- 适当归属月之暗面
安全考量
# 实现输入验证
def validate_input(text):
max_length = 100000 # 限制输入大小
if len(text) > max_length:
raise ValueError("输入太长")
# 阻止有害提示
blocked_terms = ["..."] # 您的列表
for term in blocked_terms:
if term in text.lower():
raise ValueError("检测到被阻止的内容")
return text监控和日志
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def generate_with_logging(prompt):
logger.info(f"生成请求: {len(prompt)} 字符")
output = model.generate(**inputs)
logger.info(f"生成: {len(output)} tokens")
return output常见问题
Kimi K2.5 是真正开源的吗?
Kimi K2.5 是 开源权重,采用改良版MIT许可证。与仅API的闭源模型相比,这提供了显著的自由度,尽管不包括训练数据或完整训练代码(这是大型AI模型的标准做法)。
我可以商业使用 Kimi K2.5 吗?
可以,但有条件。改良版MIT许可证允许大多数企业商业使用。若产品/服务超过1亿月活或月收入超过2000万美元,需要在面向用户界面中显著展示“Kimi K2.5”。
自托管成本是多少?
成本会因地区、云厂商、量化策略和吞吐目标而有很大差异。建议以当前云厂商价格计算器和官方部署指南示例作为预算基线。
我可以修改和再分发 Kimi K2.5 吗?
可以,您可以在相同许可条款下修改、微调和分发您的修改版本。这包括创建衍生模型。
Kimi K2.5 与 Llama 3 开源使用相比如何?
| 方面 | Kimi K2.5 | Llama 3 / 3.1 |
|---|---|---|
| 参数规模 | 总参数 1T / 激活参数 32B | 随具体 checkpoint 不同 |
| 上下文 | 256K | 随版本不同(Llama 3.1 可到 128K) |
| 许可证 | 改良版 MIT | Llama Community License |
| 商业使用 | 允许,但有署名阈值条款 | 允许,但有对应许可证限制 |
| 硬件需求 | 满配场景通常更重 | 小规格 checkpoint 通常更轻 |