新手一步步学习黑盒优化算法,借助达摩院MindOpt的RABBO榜单【系列1/3】

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 这次达摩院MindOpt优化求解器团队出的「开发者福利」黑盒优化RABBO V1.0看起来挺有意思的,什么室黑盒优化呢?怎么借助这个榜单学习这个技术呢?

1 黑盒优化的概念

什么是黑盒优化?「黑盒优化问题」泛指目标函数难以从数学上解析表达,缺少可直接利用的梯度信息,仅可利用目标函数输入和对应输出函数值进行最优解搜索的优化问题。

太抽象,不懂,根据达摩院MindOpt的教程,它“通过获取不同控制参数(输入变量)对应的系统表现,来推断和搜寻优化解"、“可用于强化学习策略搜索、工业冶炼方案设计、计算资源额度预算优化等”。

云栖大会上王孟昌博士有讲解: https://yunqi.aliyun.com/2021/agenda/session170 在这个直播回放大约20分钟的时候,截图如下:
image.png
其中的黑盒优化的架构就像下面的图这样,我们假设我们要求解的问题不好描述,就把这个问题做成一个仿真系统,这个系统可以根据输入的变量值(“候选解”)来给出对应的评价(“观测值”),然后黑盒优化算法,就是接上这个仿真系统,通过不断地去提供候选解和得到观测值,来搜索可能的最优表现的候选解。
image.png

2 黑盒优化benchmark:RABBO

这次达摩院MindOpt优化求解器团队出的「开发者福利」RABBO V1.0看起来挺有意思的,题目集包含4种问题:
image.png

从这儿可以看到他们的网页介绍:https://tianchi.aliyun.com/specials/promotion/BlackBox
image.png

2.1 瞄一眼长长的文档

点击“查看文档”,会进入个长长的文档,供了解细节。提交评测实际是进的同一个页面,上面有一排tab不要错过,有“排行榜”和“提交结果”。太长,瞄一眼文档结构就行。
image.png

2.2 看git项目

image.png
点击首页的“下载数据”按钮,和数据列表的“guide.html.zip”文件,都会引导到阿里云家的git(code.aliyun.com),用阿里云的账号登录,第一次用需要根据指引把自己的账号设置好,账号折腾好后,在https://code.aliyun.com/mindopt001/RABBO 可以看到文件截图如下图。
image.png
点击“3.27MB”的图标,可以看到文件如下图:
image.png

2.3 下载它

然后根据自己的喜好下载它。考虑到官方好像在不停更新的样子,我们fork这个项目,在页面上点击“派生”,等待系统完成
image.png
image.png
这个页面会转很久很久,好像有bug的样纸。 点击左侧导航栏的“项目”就可以看到项目已经有了,地址是
https://code.aliyun.com/你的Username/RABBO,比如我的名字是wuyoy520。可以进项目设置将“可见等级”改成Private。
image.png
然后clone克隆到本地自己喜欢的文件夹内。

git clone git@code.aliyun.com:你的Username/RABBO.git

clone完了后,根据git指导来安装它,"Note: RABBO supports Python3.6 or newer." 由于我的python3是分开的指令所以我是这样做的:

cd RABBO
pip3 install -r requirements.txt
python3 setup.py install
pip3 install -e .

运行看结果的主程序示例程序在这儿:

python3 examples/experiment_example.py

image.png
最后的运行结果好像是不OK的,没解出来:
image.png

2.3.1 偷懒的换git账号方法

这里分享一个我切换git账号的偷懒方法:建立一个空的empty项目,然后里面会有Git全局设置参数,复制这两句到终端命令行运行。
image.png

3 参考文档,学习RABBO

3.1 RABBO V1.0 问题集

4个问题分别对应文件夹中的不同文件。在目录 blackbox_starter_kit -> problems文件夹下面。
image.png
只有4个文件夹,是因为里面的2 金属冶炼配比优化并没有开放直接下载,参与公开测评,也就是评分的分数里会有它。

3.2 步骤1,实现一个自己的算法,嗯,姑且先copy一个

前面说运行看结果的主程序示例程序examples/experiment_example.py,内容是:
image.png

直接不改的运行结果好像是不OK的,没解出来:
image.png

我们要改的文件在blackbox_starter_kit/algorithms/submission/submission_algorithm.py
image.png

里面有一些指导,我们先copy一份示例算法过来,示例算法在blackbox_starter_kit/algoriths/文件夹下的cmaes/cma_algorithm.pyrandom_search/random_search_algorithm.py
将cma的算法代码“有技巧”地拷贝至submission/submission_algorithm.py,不要动函数名,其他的copy进去。然后将examples/experiment_example.py中的算法改成选手算法:
image.png
运行,可以看到有类似的输出了,后续就在这个submission_algorithm.py改造自己的算法就行。

3.3 步骤2,额,上1步运行过了,改算法后面再研究,先跳过

3.4 步骤3,打包算法提交测评

文档写的很轻松的几句话,但是前面需要安装docker,点击进入标的链接,根据这个页面的内容来安装、开通容器镜像服务,打镜像,和推仓库。
image.png
首先,先安装docker;
然后,从https://www.aliyun.com/product/acr容器镜像服务ACR的产品页,开通进入“管理控制台”,如下图,创建个人版(免费)实例。根据文档指引,在页面上操作,创建一个私有的命名空间,然后再创建一个本地镜像仓库。
image.png

然后,回到rabbo的目录,运行sh build.sh来打包仓库:

cd RABBO
sh build.sh

由于我电脑多个Python版本,因此要进build.sh把python改成python3
image.png
然后我家的龟速网络就要漫长地等待了。。。
image.png
镜像打结束后,注意,最后一行显示:
naming to docker.io/library/mind-blackbox-bench:20211218,
复制mind-blackbox-bench:20211218,后面要这个ImageId。

然后,推镜像到仓库。从推镜像的指令在仓库里面复制更方便:
image.png
image.png
第一次推不晓得啥米原因它卡住了,然后取消了后重新推又很快就上去了。这时候刷新镜像版本就能看到多了个镜像啦。
image.png

最后,提交评测。提交结果的tab页。镜像的地址从奖项的基本信息里面拷贝公网的地址,并在后面加上刚刚提交的版本,如:0.1
image.png

提交了后,等待一会后,出现结果。
image.png
注意,如果前面一个没结束的时候重复提交,上一个任务会被停掉,之前提交的任务会获得一个“task terminated”的已经失败提示。
点击模型的超链接,会弹出日志先是各个分数。排行榜不是实时更新的,需要等待。
image.png
至此,整个流程走通了。

4 其他文

后面我会发如何去读官方参考算法代码,和如何研发自己的算法。
先立个flag:
1.《学习一下官方提供的两个参考算法和开源算法》
2.《改编一个自己的黑盒优化算法》

image.png

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
20天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
13天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
14天前
|
人工智能 算法 大数据
Linux内核中的调度算法演变:从O(1)到CFS的优化之旅###
本文深入探讨了Linux操作系统内核中进程调度算法的发展历程,聚焦于O(1)调度器向完全公平调度器(CFS)的转变。不同于传统摘要对研究背景、方法、结果和结论的概述,本文创新性地采用“技术演进时间线”的形式,简明扼要地勾勒出这一转变背后的关键技术里程碑,旨在为读者提供一个清晰的历史脉络,引领其深入了解Linux调度机制的革新之路。 ###
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR
阿里云人工智能平台 PAI 与复旦大学王鹏教授团队合作,在自然语言处理顶级会议 EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。
|
20天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
20天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
20天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
20天前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
20天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
20天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明