Jiply/tiny-interjection-model-alpha

GitHub: Jiply/tiny-interjection-model-alpha

一个基于 QLoRA 微调 Qwen3-4B 的轻量级话权控制模型,用于在打字聊天中决定 AI 助手应等待、响应、插话还是继续。

Stars: 6 | Forks: 0

# 微型 Interjection 模型 Alpha Tiny Interjection Model Alpha (TIMA) 探索了一种用于打字聊天的小型话权控制模型。给定一个带有时间戳的事件流,该模型会决定助手是应该等待、响应、插话还是继续。 ``` wait|respond|interject|continue optional assistant message ``` 本代码库包含可复现的数据 pipeline、Qwen3 4B QLoRA 训练和评估代码、一个 FastAPI 决策 endpoint,以及一个本地 `llama.cpp` runtime。 ## 挑战赛状态 本项目正在为 Nebius Serverless AI Builders Challenge 做准备。它将 QLoRA 训练打包为 Nebius Serverless AI Job,并包含一个保证密钥安全的提交包装器。在提交之前,仍需执行该 Serverless Job 并记录其测量结果。 该挑战赛还要求提供一个公开代码库、执行证明和一篇技术博客文章。这些提交材料应在 Serverless 运行完成后才添加。 ## 架构 1. 通过 DigitalOcean Serverless Inference 使用 Qwen3.5 生成合成的打字聊天候选数据。 2. 在本地验证 schema、语义、平衡性、重复项和 prompt 多样性。 3. 将批准的行打包为确定性的 Hugging Face dataset splits。 4. 在 Nebius Serverless AI Job 中使用 QLoRA 微调 `Qwen/Qwen3-4B-Instruct-2507`。 5. 对照固定的 40 个案例的 DoubleTextBench holdout 进行评估,除非通过质量门禁,否则阻止发布。 6. 合并并量化每个已完成的实验以进行存档;仅推广通过发布门禁的 adapter。 ## Nebius 训练证据 第一次 QLoRA 实验在 Nebius L40S 虚拟机上运行。下方经过涂抹的截图保留了计算配置和利用率,而未暴露资源名称或标识符。Nebius Serverless AI Job 运行仍然是 [TODO.md](TODO.md) 中挑战赛工作的一部分。 ![涂抹后的 Nebius L40S 虚拟机配置](https://raw.githubusercontent.com/Jiply/tiny-interjection-model-alpha/main/assets/nebius-virtual-machine.png) ![涂抹后的 Nebius 计算利用率](https://raw.githubusercontent.com/Jiply/tiny-interjection-model-alpha/main/assets/nebius-compute-utilisation.png) 原始响应、被拒绝的候选数据、datasets、checkpoints、adapters、报告和模型二进制文件均属于生成的产物,特此故意排除在 Git 之外。 测量的来源和非敏感的结果摘要保留在 [docs/experiment-results.md](docs/experiment-results.md) 中,包括 DigitalOcean Serverless Inference 教师模型运行及其 smoke manifest。 保留的模型产物哈希值和固定的公开基础源记录在 [docs/artifact-manifest.json](docs/artifact-manifest.json) 中。以 `.partial` 结尾的文件名永远不会被接受为可执行模型。 ## 本地设置 推荐使用 Python 3.11。 ``` make setup make test ``` 生成确定性的离线 dataset: ``` make data ``` 这会将训练、验证和 DoubleTextBench JSONL 文件写入 `data/processed/` 目录下。 ## 教师数据 经过验证的 702 行合成 dataset 已通过 Hugging Face 发布。使用其公开的代码库 ID 和不可变修订版来复现运行。 在固定的修订版本下载已发布的训练和验证 splits: ``` hf download \ ORGANIZATION/DATASET \ --repo-type dataset \ --revision DATASET_COMMIT_SHA \ --local-dir data/processed/qwen35-hf ``` 托管的教师数据生成路径需要经过身份验证的 `doctl` 安装。它会创建一个新的合成 dataset,不会读取私人对话或个人数据。 ``` cd digital-ocean make generate COUNT=100 make package COUNT=100 make verify-package make upload HF_DATASET_REPO=ORGANIZATION/DATASET ``` 上传目标使用官方的 Hugging Face CLI。仅当可执行文件未命名为 `hf` 时,才设置 `HF_CLI`。 对于新生成的 dataset,在将其代码库公开之前,请审查其卡片和样本: ``` hf repos settings ORGANIZATION/DATASET --public ``` 详情请参阅 [digital-ocean/README.md](digital-ocean/README.md)。 ## 训练和评估 通用的 CUDA 路径如下: ``` make data make eval-base make train make eval-adapter make verify ``` 默认设置: - 基础模型:`Qwen/Qwen3-4B-Instruct-2507` - 量化:4-bit NF4 - LoRA 秩 (rank) 和 alpha:`16` - 最大序列长度:`4096` - 质量门禁:100% 的 schema 有效性,95% 的动作准确率,95% 的预期内容准确率,并且在 holdout 的 `wait` 案例中不得出现过早响应 ## Nebius Serverless AI 作业 构建 Linux GPU 镜像并将其发布到 Nebius 可访问的 registry: ``` docker build --platform linux/amd64 -t REGISTRY/tiny-interjection-model-alpha:VERSION . docker push REGISTRY/tiny-interjection-model-alpha:VERSION ``` 将 Hugging Face token 存储在 Nebius MysteryBox 中,然后提交一次性 job: ``` nebius/submit_job.sh \ REGISTRY/tiny-interjection-model-alpha:VERSION \ ORGANIZATION/DATASET \ DATASET_COMMIT_SHA \ ORGANIZATION/MODEL \ HF_SECRET_SELECTOR \ SUBNET_ID ``` 目标 Hugging Face 模型代码库中预期的持久化输出包括 PEFT adapter、基础评估、adapter 评估、generated-validation 评估以及量化后的 GGUF。Job 状态和日志仍可通过 Nebius CLI 查看。 有关设置、监控和安全详细信息,请参阅 [nebius/README.md](nebius/README.md)。 ## 演示 在无模型权重的情况下运行显式启发式 smoke demo: ``` make cli-heuristic ``` 使用 `llama.cpp` 运行经过训练的 GGUF 基础模型和 LoRA adapter: ``` make cli-llama \ LLAMA_CLI=/path/to/llama-cli \ LLAMA_MODEL=/path/to/base.gguf \ LLAMA_ADAPTER=/path/to/adapter.gguf ``` 要下载与保留的 adapter 配合使用的固定公开基础模型: ``` curl -L --fail --retry 5 \ --output runs/local-llama/Qwen3-4B-Instruct-2507-Q4_K_M.gguf.partial \ https://huggingface.co/lmstudio-community/Qwen3-4B-Instruct-2507-GGUF/resolve/4edb920b6f14e3b9284d4502a6485103d72cde05/Qwen3-4B-Instruct-2507-Q4_K_M.gguf ``` 在将训练好的 PEFT adapter 放入 `adapters/qwen3-4b-instruct-2507` 后,启动 FastAPI 服务: ``` make serve ``` 然后请求决策: ``` curl -s http://127.0.0.1:8000/decide \ -H 'content-type: application/json' \ -d '{"events":[{"role":"user","text":"can you help write this","dt_ms":0},{"role":"user","text":"make it warmer actually","dt_ms":1300}]}' ``` ## 数据和安全 - pipeline 中只能包含合成或公开数据。 - 切勿提交凭证、私人数据、原始模型响应、被拒绝的行、模型权重或未经审查的云端日志。 - Hugging Face token 必须在 runtime 提供,并限定在所需的 dataset 或模型代码库范围内。 - 在发布 dataset 或更改代码库可见性之前,请审查生成的样本。 ## 许可证 MIT。请参阅 [LICENSE](LICENSE)。
标签:AV绕过, DLL 劫持, FastAPI, IaC 扫描, llama.cpp, QLoRA微调, 人工智能, 大语言模型, 对话控制, 用户模式Hook绕过, 请求拦截, 逆向工具