首页
/ 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服务器端反馈计算以获得最佳体验。开发者应根据具体需求选择最适合的解决方案组合。

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

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
156
2 K
kernelkernel
deepin linux kernel
C
22
6
pytorchpytorch
Ascend Extension for PyTorch
Python
38
72
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
519
50
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
943
556
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
196
279
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
993
396
communitycommunity
本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息
361
12
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
146
191
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Python
75
71