ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

性能比肩闭源 Jev 1.13,开源决策模型 StartLux-Decision 介绍及本地部署 支持文本/图片决策

性能比肩闭源 Jev 1.13,开源决策模型 StartLux-Decision 介绍及本地部署 支持文本/图片决策 一、StartLux-Decision 介绍最近决策模型Jev很快火了起来。与普通对话模型不同这类模型不是围绕开放式问答生成一段文字而是针对给定材料和候选项直接做出判断。比如客服工单该分给哪个团队、故障是否需要升级、影响程度属于哪一级都可以由模型输出明确的选项和对应概率。Jev目前是闭源服务用户仅能通过接口调用模型无法本地部署。而本文介绍的StartLux-Decision作为开源决策模型不仅在性能表现上与Jev相当还提供了从0.8B到35B-A3B的多个尺寸便于根据硬件条件选择本体部署。在公开的评测中StartLux-Decision系列多个尺寸在JevBench和Intern-Decision上与Jev 1.13处于同一水平9B及以上版本在这两项指标上均取得更高分数官方公布与其他决策模型对比说明JevBench公开测试集统计了Intern-Decision套件中231个公开题目的正确答案数量Intern平均准确率是其七个测试套件的平均值DI表示两个版本的Decision Index其他系统的数值来自公开排行榜。空白单元格表示该数值未公开。StartLux-Decision的延迟数据基于单颗H200测得三个问题在一次前向传播中完成解答。Intern-Decision在RTX 4090上自行测量的结果。TypeSafe API网关报告的同一请求的服务端时间100次平均值与我们的测量方式一致已排除网络延迟Intern-Decision报告的端到端延迟为109.7 ms。从对比数据看StartLux-Decision系列不同尺寸各有侧重。在JevBench和Intern-Decision测试集上4B及以上版本均优于Jev 1.13而且4B模型在延迟上比Jev 1.13下降约59.375%。同时StartLux-Decision项目提供的Sever方式兼容Jev的TypeSafe/v1/systemone接口规范支持三种问题类型类型用途主要返回字段choice从候选项中选择一个choice、probabilities、confidencenoul判断是或否noul表示为真的概率score在有序等级中评分criteria为等级列表score、legend、probabilities、confidence更多介绍、开源协议和说明请参考官方GithubGithub地址https://github.com/StartLuxLabs/StartLux-DecisionModelScope 地址 (模型权重以 CC BY-NC 4.0 许可发布)https://www.modelscope.cn/models/StartLuxAI/StartLux-Decision-4B本文以轻量级的StartLux-Decision-4B模型为例介绍本地部署以及调用过程4B版本下如果没有GPU的话使用CPU也可以做推理运算。二、StartLux-Decision-4B 本地部署2.1 下载项目及模型项目目前已经托管至Hugging Face和ModelScope这里使用ModelScope快速下载modelscope download--modelStartLuxAI/StartLux-Decision-4B--local_dirStartLux-Decision-4B下载完毕后进入项目后续所有操作均在项目目录中进行其中startlux_decision包下就是封装好的API入口2.2 环境配置这里推荐使用uv下载相关依赖初始化项目并下载venv环境使用python 3.14uv init--python3.14uv venv--python3.14安装依赖uv pipinstall-rrequirements.txt --index-url https://pypi.tuna.tsinghua.edu.cn/simple说明官方的requirements.txt中如果在Windows环境下是不会安装flash-linear-attention和causal-conv1d两个依赖的启动时会提示降级至PyTorch的实现上速度相对会慢。如果本地环境有CUDA可以手动移除requirements.txt中的sys_platform linux条件后再安装。注意在CUDA上运行如果这两个加速内核没有生效推理会抛出RuntimeError拒绝启动。三、SDK 方式运行测试StartLux-Decision提供了API Server和SDK直接调用两种方式这里先进行SDK调用测试第四节为API Server方式的启动测试过程。SDK的入口是startlux_decision包导出的StartLuxDecision类主要参数如下参数说明path模型目录例如.devicecuda或cpu不传时自动选择有CUDA则用CUDAimages是否加载视觉塔设为False可省下约 0.2 到 0.9 GB 显存max_length本次运行的提示词长度上限默认262144并不是模型能力上限graphs是否录制CUDA图GPU上默认开启max_pixels/min_pixels单张图片缩放后的像素上下限3.1 文本决策下面用客服工单分流作为文本决策测试。正文和各问题字段对应仓库示例判断结果应以实际运行模型为准不预设分类、分值或概率。在项目根目录下创建如下内容py脚本importjsonfromstartlux_decisionimportStartLuxDecisiondefmain()-None:modelStartLuxDecision(.,devicecpu,imagesFalse,graphsFalse,max_length4096,)answers,usagemodel.decide({text:客户:小毕超问题: 包裹送达时已经破损客户希望申请退款。},{team:{type:choice,instructions:这个问题应该由哪个团队处理,criteria:{billing:付款、退款和账单问题,shipping:配送和包裹破损问题,technical:应用、登录和账户问题,},},needs_refund:{type:noul,instructions:是否应该为客户办理退款,},severity:{type:score,instructions:对客户造成的影响有多严重,criteria:[轻微影响,明显不便,客户无法正常使用],},},)print(决策结果)print(json.dumps(answers,ensure_asciiFalse,indent4))print(用量信息)print(json.dumps(usage,ensure_asciiFalse,indent4))if__name____main__:main()这里的state描述了问题现象questions是一个字典键名就是返回结果里的字段名因此命名时建议直接使用业务语义。三个问题分别覆盖了choice、noul、score三种类型在同一次调用中一起返回。运行结果如下如果需要在离线场景下批量处理大量请求可以把多个(state, questions)组成列表交给decide_batch它会把所有问题合并成排序后的批量前向运算比循环调用decide快manymodel.decide_batch([(state_a,questions_a),(state_b,questions_b)])3.2 图片决策SDK的images参数可接收图片文件路径等格式状态文本中的image标记图片所在位置。具体来说decide(state, questions, images[...])中的images可以是PIL图片、文件路径、编码后的字节、base64字符串或data URI按顺序对应state里出现的image标记如果state是结构化对象或没有image标记图片会统一放在状态前面。需要注意图片输入依赖视觉塔而视觉塔只在PyTorch后端上加载MLX和GGUF后端只支持文本。测试图片实现逻辑如下importjsonfrompathlibimportPathfromstartlux_decisionimportStartLuxDecision IMAGE_PATHPath(rtest.jpg)defmain()-None:ifnotIMAGE_PATH.is_file():raiseFileNotFoundError(f找不到图片文件{IMAGE_PATH})modelStartLuxDecision(.,imagesTrue,graphsFalse,)answers,usagemodel.decide(image 请检查包裹外观判断是否存在明显破损。,{damaged:{type:noul,instructions:包裹是否有明显撕裂、压瘪或内容物暴露,},damage_type:{type:choice,instructions:最明显的问题属于哪一类,criteria:{none:未见明显破损,crushed:包装被压瘪或变形,torn:包装撕裂或开口,wet:包装被水浸湿,},},},images[str(IMAGE_PATH)],)print(决策结果)print(json.dumps(answers,ensure_asciiFalse,indent4))print(用量信息)print(json.dumps(usage,ensure_asciiFalse,indent4))if__name____main__:main()运行结果四、API Server 方式运行测试4.1 启动服务API Server的实现已经封装好在startlux_decision/server.py下可直接启动uv run --link-modecopy python-mstartlux_decision.server--nameStartLux-Decision-4B--model.--port8090服务端常用的启动参数如下参数说明--model必填本地模型目录--host/--port监听地址与端口默认127.0.0.1:8090--name响应中返回的模型名称默认取目录名示例里显式指定为StartLux-Decision-4B--devicecuda或cpu默认有CUDA时用CUDA--backendauto/torch/mlxauto在 Apple Silicon 上装了mlx-lm时自动走MLX其余走torch--int8MLX后端下在 M5 及之后的 Mac 上启用 int8 矩阵乘--max-length最长提示词长度默认262144torch后端--max-pixels单张图片缩放后的像素上限默认1048576--no-images不加载视觉塔torch后端说明服务是单并发实现的内部用锁把推理串行化一次只处理一个请求。因此它适合本地验证和低并发业务高并发场景需要自行在外层做队列或启动多个实例。4.2 查看可用模型使用/v1/models接口查看可用模型4.3 文本决策下面依然用客服工单分流作为文本决策测试。请求正文和各问题字段对应仓库示例判断结果应以实际运行模型为准不预设分类、分值或概率。接口POST http://127.0.0.1:8090/v1/systemone请求体{state:{text:客户:小毕超问题: 包裹送达时已经破损客户希望申请退款。},questions:{team:{type:choice,instructions:这个问题应该由哪个团队处理,criteria:{billing:付款、退款和账单问题,shipping:配送和包裹破损问题,technical:应用、登录和账户问题}},needs_refund:{type:noul,instructions:是否应该为客户办理退款},severity:{type:score,instructions:对客户造成的影响有多严重,criteria:[轻微影响,明显不便,客户无法正常使用]}}}响应结果4.4 图片决策状态文本中的image标记图片所在位置。使用images数组传入base64字符串或data URI。以下示例以本地包裹照片判断是否存在可见破损这里使用py脚本调用Server其中将图片以base64的方式传至images参数下测试图片和前面相同importasyncioimportbase64importjsonimportmimetypesfrompathlibimportPathimporthttpx API_URLhttp://127.0.0.1:8090/v1/systemoneIMAGE_PATHPath(rtest.jpg)asyncdefmain():image_bytesIMAGE_PATH.read_bytes()mime_typemimetypes.guess_type(IMAGE_PATH.name)[0]orimage/jpegdata_uri(fdata:{mime_type};base64,f{base64.b64encode(image_bytes).decode(ascii)})payload{state:image 请检查包裹外观判断是否存在明显破损。,images:[data_uri],questions:{damaged:{type:noul,instructions:包裹是否有明显撕裂、压瘪或内容物暴露,},damage_type:{type:choice,instructions:最明显的问题属于哪一类,criteria:{none:未见明显破损,crushed:包装被压瘪或变形,torn:包装撕裂或开口,wet:包装被水浸湿,},},},}asyncwithhttpx.AsyncClient(timeout120)asclient:responseawaitclient.post(API_URL,jsonpayload)response.raise_for_status()resultresponse.json()print(json.dumps(result,ensure_asciiFalse,indent2))if__name____main__:asyncio.run(main())运行结果
返回列表