large_concept_model

GitHub
2.4k 206 较难 1 次阅读 昨天MIT语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

large_concept_model 是 Meta 开源的一种新型语言建模框架,旨在让 AI 在“概念”而非单纯的词汇层面理解和生成语言。传统大模型通常逐字预测下一个 token,而 large_concept_model 则是在句子级的语义空间中进行自回归预测。它将整个句子抽象为一个与语言和模态无关的“概念”向量(基于 SONAR 嵌入空间),支持涵盖 200 种文本语言和 57 种语音语言的跨模态处理。

这一架构主要解决了传统模型在处理长程语义依赖和多语言混合场景时的局限性,通过更高层级的语义表示,提升了模型对整体句意的把握能力。项目提供了基于 16 亿参数模型的训练方案,涵盖了均方误差回归和扩散生成等多种技术路径,并使用了万亿级 token 数据进行验证。

large_concept_model 非常适合人工智能研究人员、算法工程师以及对下一代语言模型架构感兴趣的开发者使用。其独特的技术亮点在于跳出了传统的离散词符建模,探索了在连续语义空间中进行序列生成的可能性,为构建更通用、更高效的智能体提供了新的研究范式。虽然目前主要面向科研实验,但其展现出的跨语言与跨模态潜力,预示着未来在人机交互领域的广阔应用前景。

使用场景

某跨国电商团队正在构建一个支持全球 200 种语言的智能客服系统,需要实时理解并生成多语言回复以处理用户咨询。

没有 large_concept_model 时

  • 多语言维护成本极高:传统方案需为每种语言单独训练或微调模型,导致算力资源浪费且更新滞后。
  • 语义理解碎片化:不同语言间的细微语义差异常被忽略,导致英语中的“紧急”与斯瓦希里语中的对应词在向量空间中距离过远,影响意图识别准确率。
  • 跨模态扩展困难:若想增加语音客服功能,需重新搭建一套独立的语音识别与合成链路,无法复用现有的文本模型能力。
  • 长上下文逻辑断裂:基于 Token 的传统建模在处理长句时容易丢失整体句意,导致生成的回复虽然语法正确但逻辑不通。

使用 large_concept_model 后

  • 统一语义空间降本增效:large_concept_model 将 200 种语言和 57 种语音映射到统一的 SONAR 概念空间,只需维护一个模型即可覆盖所有语种,大幅降低训练与部署成本。
  • 深层语义精准对齐:通过在“句子表示空间”进行自回归预测,模型能捕捉跨语言的深层概念一致性,确保不同语言下的用户意图被同等精准地理解。
  • 天然支持跨模态交互:得益于语言与模态无关的特性,团队可直接利用同一套架构无缝接入语音输入输出,无需重复造轮子。
  • 句子级逻辑更连贯:直接对完整句子的概念进行建模,避免了 Token 级别的碎片化问题,生成的多语言回复在逻辑连贯性和信息密度上显著提升。

large_concept_model 通过将语言建模从"Token 预测”升级为“概念预测”,彻底打破了多语言与跨模态应用的壁垒,让全球化 AI 服务变得高效且统一。

运行环境要求

操作系统
  • Linux
GPU
  • 非必需(支持 CPU),若使用 GPU 需自行安装匹配的 PyTorch CUDA 版本(示例为 CUDA 12.1)
  • 训练示例配置要求每节点 8 张 GPU,但未指定具体显存大小
内存

未说明(训练示例配置要求每任务 32 CPU 核心,内存设为 0 表示由调度器决定或无限制)

依赖
notes1. 该项目强依赖 fairseq2 的发布候选版本 (v0.3.0rc1),安装时需指定特定的索引源。 2. 默认仅提供 CPU 版本的依赖安装命令,使用 GPU 需手动安装对应 CUDA 版本的 torch 和 fairseq2。 3. 训练流程主要设计用于 SLURM 集群环境,本地运行需使用 torchrun 并调整批次大小。 4. 数据预处理需要 SONAR 嵌入空间支持,涉及多语言文本和语音处理。
python未说明(需通过 uv 或 pip 管理环境)
fairseq2==v0.3.0rc1
torch>=2.5.1
SONAR
stopes
hydra-core
submitit
nltk
wandb (可选)
large_concept_model hero image

快速开始

大概念模型

句子表示空间中的语言建模

[博客] [论文]

本仓库提供了大概念模型LCM)的官方实现与实验。

LCM 在一种显式的高层语义表示上运行,我们将其称为“概念”。概念具有语言和模态无关性,代表更高层次的思想。在本工作中,一个概念对应于一句话,我们使用 SONAR 嵌入空间,该空间支持文本中的 200 种语言以及语音中的 57 种语言。受支持的语言列表请参见 此处

方法

LCM 是一个在概念空间中进行自回归句子预测的序列到序列模型。我们探索了多种方法:

  • 均方误差回归(此代码中的 base_lcm)。
  • 基于扩散的生成变体(本次发布包含 two_tower_diffusion_lcm)。
  • 在量化 SONAR 空间中运行的模型(即将推出)。

这些探索均采用 16 亿参数的模型,并以约 1.3 万亿个 token 的数据进行训练。本仓库包含了重现 16 亿参数 MSE LCM 和双塔扩散 LCM 训练及微调的脚本。具体说明请参见 下方

安装

使用 UV

LCM 仓库依赖于 fairseq2。如果你的系统已安装 uv,可以通过运行以下命令来创建一个包含所有必要包的虚拟环境:

uv sync --extra cpu --extra eval --extra data

你也可以使用 uv run 来在正确的环境中运行演示命令。

请注意,我们仅提供 CPU 依赖项的要求;若需使用 GPU 支持,则需要选择适合你系统的 PyTorch 和 fairseq2 版本。例如,对于 PyTorch 2.5.1 和 CUDA 1.21,你可以执行如下操作:

uv pip install torch==2.5.1 --extra-index-url https://download.pytorch.org/whl/cu121 --upgrade
uv pip install fairseq2==v0.3.0rc1 --pre --extra-index-url  https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cu121 --upgrade

请参考 fairseq2 版本 以了解可能的版本。需要注意的是,LCM 目前依赖于 fairseq2 0.3.0 rc1 发布候选版本。

使用 pip

使用 pip 安装时,命令非常相似,但你需要自行管理环境,并确保先手动安装 fairseq2。例如,对于 CPU 安装:

pip install --upgrade pip
pip install fairseq2==v0.3.0rc1 --pre --extra-index-url  https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu
pip install -e ".[data,eval]"

如果 fairseq2 没有为你使用的机器提供构建版本,请查阅该项目的 README 文件,以在当地编译构建。

使用

[!NOTE] 如果使用 uv,请在所有命令前加上 uv run,以使用默认在 .venv 中创建的环境,例如: uv run torchrun --standalone。 或者,你也可以通过 source .venv/bin/activate 一次性激活环境。

数据准备

LCM 可以使用按句子分割并用 SONAR 嵌入的文本数据进行训练和评估。我们提供了一个可用于准备此类训练数据的示例处理流程,你可以通过以下命令运行它:

 uv run --extra data scripts/prepare_wikipedia.py /output/dir/for/the/data

该流程展示了如何从 Hugging Face 获取数据,并使用 SONAR 和 SaT 进行处理。请查看文件以获取更多关于处理自有数据的详细信息。虽然该脚本提供了从 Hugging Face 拉取数据的示例,但我们还提供了 API 来处理 jsonl、parquet 和 CSV 文件。

数据卡片

下文所述的训练器依赖于用于配置数据集的数据卡片。这些数据卡片是 YAML 文件,其中包含指向数据文件(本地或 S3 上)的指针以及有关其模式的信息。我们在 lcm/datacards/datacards.yaml 中提供了一些示例数据卡片。当你处理完一些数据后,可以更新数据卡片中的路径。

拟合归一化器

要为给定的加权数据集混合物拟合一个新的嵌入空间归一化器,可以使用以下命令:

python scripts/fit_embedding_normalizer.py --ds dataset1:4 dataset2:1 dataset3:10 --save_path "path/to/new/normalizer.pt" --max_nb_samples 1000000

其中,dataset1dataset2dataset3 是如上所示数据卡片中声明的数据集名称,而 (4, 1, 10) 则是它们各自的相对权重。 生成的归一化器随后可以按照 lcm/cards/sonar_normalizer.yaml 中所示的方式声明为模型,并在所有模型训练配置中引用。

预训练模型

基础 MSE LCM

要训练一个 MSE LCM,我们可以使用以下命令之一:

选项 1. 使用 SLURM 和 submitit 通过 stopes 的启动器进行训练:

python -m lcm.train \
    +pretrain=mse \
    ++trainer.output_dir="checkpoints/mse_lcm" \
    ++trainer.experiment_name=training_mse_lcm \

使用此命令,我们将提交一个名为 training_mse_lcm 的 SLURM 作业,并按照配方的要求执行,在本例中为:

requirements:
  nodes: 4
  tasks_per_node: 8
  gpus_per_node: 8
  cpus_per_task: 32
  mem_gb: 0
  timeout_min: 10000

您可以通过以下方式覆盖作业的要求,例如超时限制和启动器的 SLURM 分区:

python -m lcm.train \
    +pretrain=mse \
    ++trainer.output_dir="checkpoints/mse_lcm" \
    ++trainer.experiment_name=training_mse_lcm \
    ++trainer.requirements.timeout_min=100 \
    ++trainer.requirements.cpus_per_task=8 \
    ++launcher.partition=$partition_name

选项 2. 使用 torchrun 在本地进行训练(例如仅使用 2 张 GPU),并采用较小的批大小(覆盖 ++trainer.data_loading_config.max_tokens=1000):

CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nnodes=1 --nproc-per-node=2 \
    -m lcm.train launcher=standalone \
    +pretrain=mse \
    ++trainer.data_loading_config.max_tokens=1000 \
    ++trainer.output_dir="checkpoints/mse_lcm" \
    +trainer.use_submitit=false \

[!重要] 由于我们更改了配方所需的 GPU 数量,因此这将无法复现论文中的实验设置。

检查点目录 checkpoints/mse_lcm 的结构如下:

.
├── checkpoints
│   ├── step_2000
│   ├── ...
│   └── step_250000
├── config_logs
├── executor_logs
├── model_card.yaml
├── tb   # tensorboard 日志
└── wandb  # W&B 日志

请注意,除非安装了 wandb,否则将跳过 W&B 日志记录。 您可以使用 uv pip install wandb 来安装 wandb。 可以通过覆盖配方中的 Hydra 配置值来更改 W&B 参数:

++trainer.wandb_project=$project_name
++trainer.wandb_run_name=$run_name

双塔扩散 LCM

与基础 MSE LCM 类似,我们也可以按照 ./recipes/train/pretrain/two_tower.yaml 中的配方提交训练作业:

python -m lcm.train \
    +pretrain=two_tower \
    ++trainer.output_dir="checkpoints/two_tower_lcm" \
    ++trainer.experiment_name=training_two_tower_lcm \

[!提示] 要了解训练配方中的不同组成部分,请查看 此 README

微调模型

要对先前预训练的双塔扩散 LCM 进行监督数据上的微调,请按照以下步骤操作:

步骤 1. 将预训练的检查点注册为 fairseq2 资产。

您可以使用带有卡片 checkpoints/two_tower_lcm/model_card.yaml 的最终检查点,或任何经过特定训练步数后的检查点,例如 checkpoints/two_tower_lcm/checkpoints/step_2000/model_card.yaml。要注册选定的检查点,将自动生成的 YAML 文件复制到 ./lcm/cards/mycards.yaml,并重命名模型以替换默认的 on_the_fly_lcm./lcm/cards/mycards.yaml 将如下所示:

__source__: inproc
 checkpoint: file://path_to/large_concept_model/checkpoints/two_tower_lcm/checkpoints/step_2000/model.pt
 model_arch: two_tower_diffusion_lcm_1_6B
 model_family: two_tower_diffusion_lcm
 name: my_pretrained_two_tower

有关如何管理 fairseq2 资产的更多信息,请参阅 文档

步骤 2. 启动指向要微调模型的微调作业,在本例中为 my_pretrained_two_tower

CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nnodes=1 --nproc-per-node=2 \
    -m lcm.train launcher=standalone \
    +finetune=two_tower \
    ++trainer.output_dir="checkpoints/finetune_two_tower_lcm" \
    ++trainer.data_loading_config.max_tokens=1000 \
    +trainer.use_submitit=false \
    ++trainer.model_config_or_name=my_pretrained_two_tower

或者

python -m lcm.train \
    +finetune=two_tower \
    ++trainer.output_dir="checkpoints/finetune_two_tower_lcm" \
    ++trainer.experiment_name=finetune_two_tower_lcm \
    ++trainer.model_config_or_name=my_pretrained_two_tower

同样,要微调一个 MSE LCM,可以按照相同的预训练检查点注册说明,并使用相应的配方(./recipes/train/finetune/mse.yaml)提交微调作业:

python -m lcm.train \
    +finetune=mse \
    ++trainer.output_dir="checkpoints/finetune_mse_lcm" \
    ++trainer.experiment_name=finetune_mse_lcm \
    ++trainer.model_config_or_name=my_pretrained_mse_lcm

评估模型

[!NOTE] 对于高级评估(例如不同任务的基准测试、与大语言模型的结果比较等),请查看评估文档

步骤 0. 下载用于评估 ROUGE 所需的 NLTK 数据:

python -m nltk.downloader punkt_tab

步骤 1. 可以通过指向模型的 model_card YAML 文件,或者在将其注册为 fairseq2 资产之后(与我们注册 my_pretrained_two_tower 的方式相同),生成并评分模型的输出:

model_card=./checkpoints/finetune_two_tower_lcm/checkpoints/step_1000/model_card.yaml
OUTPUT_DIR=evaluation_outputs/two_tower

torchrun --standalone --nnodes=1 --nproc-per-node=1 -m lcm.evaluation  \
  --predictor two_tower_diffusion_lcm  \
  --show_progress true \
  --data_loading.max_samples 100 \
  --model_card ${model_card} \
  --launcher standalone \
  --dataset.source_suffix_text '[MODEL]:' \
  --tasks finetuning_data_lcm.validation \
   --task_args '{"max_gen_len": 10, "eos_config": {"text": "End of text."}}' \
  --data_loading.batch_size 4  --generator_batch_size 4 \
  --dump_dir ${OUTPUT_DIR} \
  --inference_timesteps 40 \
  --initial_noise_scale 0.6 \
  --guidance_scale 3 \
  --guidance_rescale 0.7

其中,在示例中我们仅评估 100 个样本(--data_loading.max_samples 100),并将模型输出长度限制为 10 句话(--task_args '{"max_gen_len": 10}')。

输出将被转储到 ./evaluation_outputs/two_tower 目录下,其结构如下:

.
├── metadata.jsonl
├── metrics.eval.jsonl
├── raw_results
├── results
└── tb

其中 metrics.eval.jsonl 包含语料级别的评分。

要评估 MSE LCM,我们使用相应的预测器 (base_lcm) 并按以下方式评估:

model_card=./checkpoints/finetune_mse_lcm/checkpoints/step_1000/model_card.yaml
OUTPUT_DIR=evaluation_outputs/mse_lcm

torchrun --standalone --nnodes=1 --nproc-per-node=1 -m lcm.evaluation  \
  --predictor base_lcm --sample_latent_variable False \
  --show_progress true \
  --data_loading.max_samples 100 \
  --model_card ${model_card} \
  --launcher standalone \
  --dataset.source_suffix_text '[MODEL]:' \
  --tasks finetuning_data_lcm.validation \
   --task_args '{"max_gen_len": 10, "eos_config": {"text": "End of text."}}' \
  --data_loading.batch_size 4  --generator_batch_size 4 \
  --dump_dir ${OUTPUT_DIR} \

请注意,在此示例中,我们仅展示了如何在相同的微调数据集(验证集)上评估 LCM。若要在下游任务中进行评估,并与大语言模型的结果进行比较,请参阅评估文档

贡献

有关如何参与贡献,请参阅CONTRIBUTING文件。

引用

如果您使用本代码库,请引用以下内容:

@article{lcm2024,
  author = {{LCM 团队}, Lo\"{i}c Barrault, Paul-Ambroise Duquenne, Maha Elbayad, Artyom Kozhevnikov, Belen Alastruey, Pierre Andrews, Mariano Coria, Guillaume Couairon, Marta R. Costa-juss\`{a}, David Dale, Hady Elsahar, Kevin Heffernan, Jo\~{a}o Maria Janeiro, Tuan Tran, Christophe Ropers, Eduardo Sánchez, Robin San Roman, Alexandre Mourachko, Safiyyah Saleem, Holger Schwenk},
  title = {{大型概念模型}:基于句子表示空间的语言建模},
  publisher = {arXiv},
  year = {2024},
  url = {https://arxiv.org/abs/2412.08821},
}

许可证

本代码以 MIT 许可证发布(详见LICENSE)。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.6k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架