首页
/ TruLens项目中的反馈函数NaN结果问题分析与解决方案

TruLens项目中的反馈函数NaN结果问题分析与解决方案

2025-07-01 19:02:22作者:翟萌耘Ralph

问题背景

在使用TruLens项目进行应用评估时,开发者遇到了反馈函数结果不一致的问题。具体表现为四个自定义反馈函数(f_similarity、f_qa_relevance、f_context_relevance和f_groundedness_cot)在Snowflake中生成的结果时有时无,有时甚至会出现失败错误。部分反馈结果在leaderboard_df中显示为NaN值,影响了评估的准确性和可靠性。

问题现象

开发者定义了四个反馈函数用于评估应用表现,但在实际运行中发现:

  1. 反馈结果在Snowflake中显示不一致
  2. 部分结果缺失
  3. 部分反馈被标记为失败并伴随错误
  4. 在打印leaderboard_df时,部分反馈显示为NaN

技术分析

可能原因

  1. 计算时间不足:反馈函数计算可能需要较长时间,特别是在使用LLM模型时
  2. 线程管理问题:错误日志显示"cannot schedule new futures after interpreter shutdown",表明线程池在解释器关闭后仍尝试提交任务
  3. 模型兼容性问题:使用Gemini模型可能导致的性能问题
  4. 依赖版本冲突:snowflake-sqlalchemy版本可能导致兼容性问题

错误日志分析

从错误日志中可以看到两个主要问题:

  1. 线程池问题:当解释器开始关闭时,仍有新任务尝试提交到线程池
  2. 请求失败:端点请求多次失败,特别是在使用Cortex端点时

解决方案

临时解决方案

  1. 增加等待时间:在获取记录和反馈前等待足够时间(15分钟以上)
  2. 使用"with_app"反馈模式:确保反馈在应用响应后计算完成
TruCustomApp(app, 
    feedback_mode="with_app",
)

长期解决方案

  1. 使用Snowflake服务器端反馈:通过启用服务器端计算提高性能
connection_params = {
    "init_server_side": True  # 启用服务器端反馈函数
}
  1. 使用Cortex反馈提供者:对于支持的模型,使用Snowflake内置的Cortex提供者
provider = Cortex(
    snowpark_session,
    model_engine="mistral-large2",
)
  1. 版本降级:将snowflake-sqlalchemy降级到1.7.1版本

模型选择建议

  1. 避免使用Gemini模型(当前不支持Cortex端点)
  2. 考虑使用Cortex支持的模型,如mistral-large2
  3. 测试不同模型的性能表现

最佳实践

  1. 监控反馈计算状态:实现状态检查机制,确保所有反馈计算完成
  2. 错误处理:添加健壮的错误处理逻辑,捕获并记录反馈计算异常
  3. 性能基准测试:对不同配置进行性能测试,确定最优设置
  4. 依赖管理:保持依赖版本兼容性,特别是与Snowflake相关的库

结论

TruLens项目中的反馈函数NaN结果问题通常由计算资源不足、线程管理问题或模型兼容性引起。通过合理配置反馈模式、选择适当的模型提供者以及管理依赖版本,可以有效解决这些问题。对于性能要求高的场景,推荐使用Snowflake服务器端反馈计算以获得最佳体验。开发者应根据具体需求选择最适合的解决方案组合。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
53
468
kernelkernel
deepin linux kernel
C
22
5
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
878
517
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
336
1.1 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
180
264
cjoycjoy
一个高性能、可扩展、轻量、省心的仓颉Web框架。Rest, 宏路由,Json, 中间件,参数绑定与校验,文件上传下载,MCP......
Cangjie
87
14
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
349
381
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
612
60