二分类模型服务:识别一段中文文本是「AIGC 改写」(label=1) 还是「人类原创」(label=0)。
详细方案见 方案.md。
onnxruntime-gpu + transformers/tokenizers)cd ~/gezida-aigc
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt
# 从 train_sample.jsonl 生成 dataset/human/seed.jsonl 与 dataset/aigc_rewrite/seed.jsonl
python scripts/seed_from_sample.py
# 也可以限制行数做快速冒烟:python scripts/seed_from_sample.py --limit 100
这两份 jsonl 是占位。你之后用真实基础数据集替换
dataset/human/*.jsonl、dataset/aigc_rewrite/*.jsonl即可,无需改代码。
source .venv/bin/activate
nohup uvicorn src.server.app:app --host 0.0.0.0 --port 8000 \
> logs/api.log 2>&1 &
健康检查:
curl -s http://127.0.0.1:8000/healthz | jq
curl -s -X POST http://127.0.0.1:8000/samples \
-H 'Content-Type: application/json' \
-d '{"samples":[{"text":"...AIGC 改写后的段落...","source":"deepseek_v3"}]}'
返回示例:
{
"received": 1, "inserted": 1, "duplicated": 0,
"pending_unused": 1, "training_triggered": false,
"trigger_reason": "unused_positive 1 < 1000"
}
触发条件(均在 config.yaml 中可调):
trigger.min_unused_positive(默认 1000)trigger.min_interval_seconds(默认 3600)curl -s http://127.0.0.1:8000/model/version | jq
客户端必须带上自己当前持有的版本号 current_version:
# 一致 → 不更新
curl -s "http://127.0.0.1:8000/model/latest?current_version=20260427_153012" | jq
# {"updated": false, "latest_version": "20260427_153012"}
# 不一致或不带 → 直接下载
curl -OJ "http://127.0.0.1:8000/model/latest?current_version=20260101_000000"
# 落盘文件:model_<version>.zip
响应头:X-Model-Version、X-Model-SHA256。
curl -s http://127.0.0.1:8000/training/<version> | jq
解压 model_<version>.zip 后:
pip install onnxruntime-gpu transformers
python scripts/predict_onnx.py --model_dir ./onnx --text "段落..."
所有可调项在 config.yaml。修改后重启 uvicorn。
| 配置 | 说明 |
|---|---|
trigger.min_unused_positive | 触发训练的未使用正样本阈值 |
trigger.min_interval_seconds | 距上次成功训练的最小间隔(秒) |
train.batch_size / train.epochs / train.lr | 训练超参 |
data.neg_pos_ratio | 训练时人类:AIGC 采样比 |
base_model | 默认 hfl/chinese-roberta-wwm-ext(base) |
logs/api.loglogs/train_<version>.logmodels/<version>/1 commits
Python
99.4%
二分类模型服务:识别一段中文文本是「AIGC 改写」(label=1) 还是「人类原创」(label=0)。
详细方案见 方案.md。
onnxruntime-gpu + transformers/tokenizers)cd ~/gezida-aigc
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt
# 从 train_sample.jsonl 生成 dataset/human/seed.jsonl 与 dataset/aigc_rewrite/seed.jsonl
python scripts/seed_from_sample.py
# 也可以限制行数做快速冒烟:python scripts/seed_from_sample.py --limit 100
这两份 jsonl 是占位。你之后用真实基础数据集替换
dataset/human/*.jsonl、dataset/aigc_rewrite/*.jsonl即可,无需改代码。
source .venv/bin/activate
nohup uvicorn src.server.app:app --host 0.0.0.0 --port 8000 \
> logs/api.log 2>&1 &
健康检查:
curl -s http://127.0.0.1:8000/healthz | jq
curl -s -X POST http://127.0.0.1:8000/samples \
-H 'Content-Type: application/json' \
-d '{"samples":[{"text":"...AIGC 改写后的段落...","source":"deepseek_v3"}]}'
返回示例:
{
"received": 1, "inserted": 1, "duplicated": 0,
"pending_unused": 1, "training_triggered": false,
"trigger_reason": "unused_positive 1 < 1000"
}
触发条件(均在 config.yaml 中可调):
trigger.min_unused_positive(默认 1000)trigger.min_interval_seconds(默认 3600)curl -s http://127.0.0.1:8000/model/version | jq
客户端必须带上自己当前持有的版本号 current_version:
# 一致 → 不更新
curl -s "http://127.0.0.1:8000/model/latest?current_version=20260427_153012" | jq
# {"updated": false, "latest_version": "20260427_153012"}
# 不一致或不带 → 直接下载
curl -OJ "http://127.0.0.1:8000/model/latest?current_version=20260101_000000"
# 落盘文件:model_<version>.zip
响应头:X-Model-Version、X-Model-SHA256。
curl -s http://127.0.0.1:8000/training/<version> | jq
解压 model_<version>.zip 后:
pip install onnxruntime-gpu transformers
python scripts/predict_onnx.py --model_dir ./onnx --text "段落..."
所有可调项在 config.yaml。修改后重启 uvicorn。
| 配置 | 说明 |
|---|---|
trigger.min_unused_positive | 触发训练的未使用正样本阈值 |
trigger.min_interval_seconds | 距上次成功训练的最小间隔(秒) |
train.batch_size / train.epochs / train.lr | 训练超参 |
data.neg_pos_ratio | 训练时人类:AIGC 采样比 |
base_model | 默认 hfl/chinese-roberta-wwm-ext(base) |
logs/api.loglogs/train_<version>.logmodels/<version>/1 commits
Python
99.4%