用ollama启动duan-translator 小模型

duan-translator小模型是专门为了段言这门中文编程语言而微调训练的,可以帮助我们写段言的程序,确切来说,是可以把python代码转为段言代码!

启动ollama并绑定到0.0.0.0

复制代码
export OLLAMA_HOST=0.0.0.0:11434
ollama serve

启动模型

复制代码
skywalk@fb98:~ $ ollama run duan-translator
>>> hello
Hello! How can I assist you today?

>>> Send a message (/? for help)

成功了!

skywalk@fb98:~ $ ollama run duan-translator

>>> 将Python代码转为段言代码:\n\nPython 代码:\ndef hello(): print('hi')

段落 hello:

打印("hi")

>>> Send a message (/? for help)

Dumate测试结果

全部测试通过! Q80 量化完美保留了微调知识,推理速度 28 tok/s,全部翻译正确。

来看一下结果对比:

Python 代码 段言翻译 正确
def add(a, b): return a + b 段落 加法 接收 a, b: / 返回 a 加 b
递归阶乘 段落 超乘 接收 n: / 如果 n 小于等于 1: / 返回 n 乘 超乘(n 减 1)
for i in range(10): print(i) 遍历 i 于 0至9: / 打印(i)
条件分支 设 x 为 10 / 如果 x 大于 5: / 否则:

关键结论:

  • Q8_0 量化(531MB)是 0.5B 小模型的最佳选择------精度足够保留 LoRA 微调知识,且能在 Quadro K4200(4GB VRAM)上流畅运行
  • 之前 Q4KM(398MB)量化太狠,把微调学到的段言语法知识全丢了
  • 推理速度 ~28 tok/s,首次加载稍慢(35s),后续 1-3 秒/次
  • 模型已部署在 http://192.168.0.88:11434,模型名 duan-translator

现在可以通过 ollama API 随时调用了。比如:

复制代码
import requests
resp = requests.post("http://192.168.0.88:11434/api/chat", json={
    "model": "duan-translator",
    "messages": \[
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": "将Python代码转为段言代码:\n\nPython 代码:\ndef hello(): print('hi')"}
    ],
    "stream": False
})
print(resp.json()["message"]\["content"])

大段测试

结果很清晰了。以下是 4 个复杂测试的分析:

Test 1 - 冒泡排序:完美

  • 嵌套循环、swap 临时变量、函数调用、数组字面量全部正确
  • range(n)遍历 i 于 0至n减1range(0, n-i-1)遍历 j 于 0至n减i减2 都精确翻译

Test 2 - 二分查找:部分正确 ⚠️

  • 模型输出了两个版本(第一版有错误后自行重试),说明 0.5B 模型在长代码上会出现重复生成
  • while left <= right当 左大于等于右(条件方向搞反了)
  • return -1返回 减 1(丢了变量名)

Test 3 - 类与继承:失败

  • 训练数据中 OOP 样本不足,模型开始幻觉(重复定义、混用 /自己、继承语法混乱)

Test 4 - 字典+列表推导:部分正确 ⚠️

  • 列表推导 \[s for s in students if ...] 正确拆解为 遍历 + 如果 + 追加
  • 但 f-string 翻译不正确,出现了 跳过(遍历...) 等无意义输出

总结:0.5B 模型 + 881 条训练数据的能力边界------

代码模式 翻译效果
函数定义、参数、返回值 ✅ 精准
for/while 循环、嵌套循环 ✅ 良好
条件分支 if/elif/else ✅ 良好
变量赋值、运算 ✅ 精准
数组操作、swap ✅ 良好
异常处理 try/except ⚠️ 部分
f-string 格式化 ❌ 不支持
类/继承/OOP ❌ 训练数据不足
列表推导式 ⚠️ 能拆解但有噪声

如果要提升 OOP 和高级语法的翻译质量,下一步可以扩充训练数据集,补充类定义、继承、列表推导、f-string、异常处理等模式的 Python→段言 对照样本。需要我来做吗?

碰到的问题

虚拟机卡的要命

是因为原来双cpu 24内核+64G内存,分配给虚拟机24G内存和16内核

现在是单cpu 12内核+32G,把虚拟机改回10内核和 20G内存

相关推荐
江畔柳前堤22 分钟前
HBM:大语言模型时代的「算力血液」——从内存墙到带宽革命的深度拆解
服务器·人工智能·windows·目标检测·语言模型·自然语言处理·软件工程
不会就选b2 小时前
Linux之信号(二)
linux·运维·服务器
GlueNa2SiO33 小时前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习
寺中人4 小时前
Linux 基础命令入门实战教程:从零掌握常用操作,新手快速上手
linux·运维·服务器·shell·linux 命令·linux 基础教程·linux 入门
小张成长计划..4 小时前
【Linux】18:基础IO
linux·运维·服务器
扬帆破浪6 小时前
文档自动检查:用 Claude Code、OpenClaw 审 WPS 文件:预览、批注、改正文
运维·服务器·wps
zt1985q7 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
白狐_7988 小时前
408计算机网络第3章:以太网交换机与共享式以太网——知识总结
服务器·网络·计算机网络
测试运维日常笔记9 小时前
tcpdump(Linux服务器)配合 Wireshark(本地分析)使用手顺与常用过滤语法详解
linux·服务器·tcpdump
Loongproxy10 小时前
大规模采集为啥用隧道代理IP?会话保持如何做到无感轮换
java·服务器·网络