Optuna发布 4.0 重大更新:多目标TPESampler自动化超参数优化速度提升显著

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: Optuna,广受欢迎的超参数优化框架,近日发布了其第四个主要版本。自2018年问世以来,Optuna迅速成为机器学习领域的关键工具,目前拥有10,000+ GitHub星标、每月300万+下载量、16,000+代码库使用、5,000+论文引用及18,000+ Kaggle使用。Optuna 4.0引入了OptunaHub平台,支持功能共享;正式推出Artifact Store管理生成文件;稳定支持NFS的JournalStorage实现分布式优化;显著加速多目标TPESampler,并引入新Terminator算法。

Optuna这个备受欢迎的超参数优化框架在近期发布了其第四个主要版本。自2018年首次亮相以来,Optuna不断发展,现已成为机器学习领域的重要工具。其用户社区持续壮大,目前已达到以下里程碑:

  • 10,000+ GitHub星标
  • 每月300万+ 下载量
  • 16,000+ 代码库使用
  • 5,000+ 论文引用
  • 18,000+ Kaggle的code使用

Optuna 4.0的开发重点包括:

  1. 用户间功能共享: 引入OptunaHub平台,便于共享新的采样器和可视化算法。
  2. 优化生成式AI和多样化计算环境:- 正式支持Artifact Store,用于管理生成的图像和训练模型。- 稳定支持NFS的JournalStorage,实现分布式优化。
  3. 核心功能增强:- 多目标TPESampler的显著加速- 新Terminator算法的引入

主要新特性

OptunaHub: 功能共享平台

OptunaHub (hub.optuna.org) 作为Optuna的官方功能共享平台正式发布。它提供了大量优化和可视化算法,使开发者能够轻松注册和分享他们的方法。这个平台的推出预计将加速功能开发,为用户提供更多样化的第三方功能。

Artifact Store: 增强实验管理

Artifact Store是一个专门用于管理优化过程中生成文件的功能。它可以有效处理:

  • 生成式AI输出的文本、图像和音频文件
  • 深度学习模型的大型快照文件

这些文件可以通过Optuna Dashboard进行查看。Optuna 4.0稳定了文件上传API,并新增了artifact下载API。同时Dashboard新增了对JSONL和CSV文件的支持。

JournalStorage: 支持NFS分布式优化

JournalStorage是一种基于操作日志的新型存储方式,它简化了自定义存储后端的实现。其中,

JournalFileBackend

支持多种文件系统,包括NFS,可以实现跨节点的分布式优化。这对于难以设置传统数据库服务器的环境尤其有用。

使用示例:

 importoptuna
 fromoptuna.storagesimportJournalStorage
 fromoptuna.storages.journalimportJournalFileBackend

 defobjective(trial: optuna.Trial) ->float:
     ...

 storage=JournalStorage(JournalFileBackend("./journal.log"))
 study=optuna.create_study(storage=storage)
 study.optimize(objective)

新Terminator算法

为解决超参数过拟合问题,Optuna引入了新的Terminator算法。它可以在超参数过拟合之前终止优化过程,或者帮助用户可视化过拟合开始的时间点。新版本引入了预期最小模型遗憾(EMMR)算法,以支持更广泛的用例。

约束优化增强

Optuna 4.0增强了约束优化功能,特别是:

  • study.best_trialstudy.best_trials现在保证满足约束条件
  • 核心算法(如TPESampler和NSGAIISampler)对约束优化的支持得到改进

多目标TPESampler的加速

多目标优化在机器学习中扮演着越来越重要的角色。例如,在翻译任务中,我们可能需要同时优化翻译质量(如BLEU分数)和响应速度。这种情况下,多目标优化比单目标优化更为复杂,通常需要更多的试验来探索不同目标之间的权衡。

TPESampler(Tree-structured Pareto Estimation Sampler)是Optuna中一个强大的采样器,它在多目标优化中展现出了优秀的性能。与默认的NSGAIISampler相比,TPESampler具有以下优势:

  1. 更高的样本效率,特别是在1000-10000次试验的范围内
  2. 能够处理动态搜索空间
  3. 支持用户定义的类别距离

在之前版本的TPESampler在处理大量试验时存在性能瓶颈,限制了其在大规模多目标优化中的应用。

性能提升

Optuna 4.0对多目标TPESampler进行了显著优化:

  • 三目标优化场景下,200次试验的速度提高了约300倍
  • 能够高效处理数千次试验的多目标优化

这一改进主要通过优化以下算法实现:

  1. WFG(加权超体积增益)计算
  2. 非支配排序
  3. HSSP(超体积子集选择问题)

TPESampler的工作原理

TPESampler基于树形Pareto估计(TPE)算法。在多目标优化中,它的工作流程如下:

  1. 将观察到的试验分为非支配解和支配解两组
  2. 为每个参数构建两个概率分布:一个基于非支配解,另一个基于支配解
  3. 使用这些分布来指导下一个试验点的选择,倾向于选择可能产生非支配解的参数值

这种方法允许算法在探索(寻找新的有希望的区域)和利用(优化已知的好区域)之间取得平衡。

使用TPESampler进行多目标优化示例

以下是使用TPESampler进行多目标优化的简单示例:

 importoptuna

 defobjective(trial):
     x=trial.suggest_float("x", -5, 5)
     y=trial.suggest_float("y", -5, 5)
     objective_1=x**2+y**2
     objective_2= (x-2)**2+ (y-2)**2
     returnobjective_1, objective_2

 sampler=optuna.samplers.TPESampler()
 study=optuna.create_study(sampler=sampler, directions=["minimize", "minimize"])
 study.optimize(objective, n_trials=100)

在这个例子中,定义了一个具有两个目标的优化问题。TPESampler被用作采样器,study被设置为最小化两个目标。

基准测试结果

测试环境:

  • Ubuntu 20.04
  • Intel Core i7-1255U CPU
  • Python 3.9.13
  • NumPy 2.0.0

测试结果如图所示:

可以看到:

  • Optuna 4.0中双目标优化性能接近单目标优化
  • 三目标优化在200次试验时,运行时间从约1,000秒减少到约3秒
  • 新版本在3-5个目标的情况下仍保持高效

TPESampler vs. NSGAIISampler

虽然NSGAIISampler是Optuna中默认的多目标优化采样器,但TPESampler在某些情况下可能更为有效:

  1. 大规模优化:在1000-10000次试验的范围内,TPESampler通常表现更好
  2. 复杂搜索空间:对于具有条件参数或动态搜索空间的问题,TPESampler更为灵活
  3. 高维参数空间:TPESampler在处理高维参数空间时通常更有效

选择合适的采样器还应该基于具体问题和计算资源。可以尝试两种采样器,比较它们在特定问题上的性能。

结论与展望

Optuna 4.0通过引入新功能和优化现有算法,大幅提升了其在复杂优化任务和多样化计算环境中的适用性。特别是多目标TPESampler的性能提升,为处理更复杂的优化问题铺平了道路。

TPESampler的显著加速使得Optuna能够更有效地处理大规模多目标优化问题。这一改进对于需要同时优化多个目标的复杂机器学习任务(如大型语言模型的训练)具有重要意义。

在官方的发布中Optuna团队还提到后面的工作:

  1. 扩展问题设置的适用范围
  2. 通过OptunaHub支持更多创新算法
  3. 进一步优化性能和用户体验
  4. 改进TPESampler和其他采样器在更广泛场景下的性能

研发团队鼓励用户尝试新版本的多目标TPESampler,Optuna有望在未来版本中提供更强大、更灵活的超参数优化解决方案。

https://avoid.overfit.cn/post/8d9596779bcc44a79f2a53a2a8d02e24

目录
相关文章
|
17天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
68 8
|
1月前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
48 4
|
1月前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
1月前
|
人工智能 监控 测试技术
探索软件测试中的自动化框架选择与优化策略####
【10月更文挑战第21天】 本文深入剖析了软件测试领域面临的挑战,聚焦于自动化测试框架的选择与优化这一核心议题。不同于传统摘要的概述方式,本文将以一个虚拟案例“X项目”为线索,通过该项目从手动测试困境到自动化转型的成功历程,生动展现如何根据项目特性精准匹配自动化工具(如Selenium、Appium等),并结合CI/CD流程进行深度集成与持续优化,最终实现测试效率与质量的双重飞跃。读者将跟随“X项目”团队的视角,直观感受自动化框架选型的策略性思考及实践中的优化技巧,获得可借鉴的实战经验。 ####
37 0
|
4天前
|
人工智能 Linux API
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
PromptWizard 是微软开源的 AI 提示词自动化优化框架,通过自我演变和自我适应机制,迭代优化提示指令和上下文示例,提升大型语言模型(LLMs)在特定任务中的表现。本文详细介绍了 PromptWizard 的主要功能、技术原理以及如何运行该框架。
50 8
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
|
28天前
|
机器学习/深度学习 人工智能 Java
探索软件测试中的自动化框架选择与优化策略####
本文深入探讨了在软件测试领域,面对众多自动化测试框架时,如何根据项目特性、团队技能及长远规划做出最佳选择,并进一步阐述了优化这些框架以提升测试效率与质量的策略。通过对比分析主流自动化测试框架的优劣,结合具体案例,本文旨在为测试团队提供一套实用的框架选型与优化指南。 ####
|
1月前
|
敏捷开发 监控 jenkins
探索自动化测试框架在敏捷开发中的应用与优化##
本文深入探讨了自动化测试框架在现代敏捷软件开发流程中的关键作用,分析了其面临的挑战及优化策略。通过对比传统测试方法,阐述了自动化测试如何加速软件迭代周期,提升产品质量,并针对实施过程中的常见问题提出了解决方案。旨在为读者提供一套高效、可扩展的自动化测试实践指南。 ##
43 9
|
1月前
|
jenkins 测试技术 持续交付
自动化测试框架的构建与优化:提升软件交付效率的关键####
本文深入探讨了自动化测试框架的核心价值,通过对比传统手工测试方法的局限性,揭示了自动化测试在现代软件开发生命周期中的重要性。不同于常规摘要仅概述内容,本部分强调了自动化测试如何显著提高测试覆盖率、缩短测试周期、降低人力成本,并促进持续集成/持续部署(CI/CD)流程的实施,最终实现软件质量和开发效率的双重飞跃。通过具体案例分析,展示了从零开始构建自动化测试框架的策略与最佳实践,包括选择合适的工具、设计高效的测试用例结构、以及如何进行性能调优等关键步骤。此外,还讨论了在实施过程中可能遇到的挑战及应对策略,为读者提供了一套可操作的优化指南。 ####
|
1月前
|
敏捷开发 监控 测试技术
探索自动化测试框架的构建与优化####
在软件开发周期中,自动化测试扮演着至关重要的角色。本文旨在深入探讨如何构建高效的自动化测试框架,并分享一系列实用策略以提升测试效率和质量。我们将从框架选型、结构设计、工具集成、持续集成/持续部署(CI/CD)、以及最佳实践等多个维度进行阐述,为软件测试人员提供一套系统化的实施指南。 ####
|
1月前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##