# OpenBox 服务教程
本教程介绍如何使用远程的 **OpenBox** 服务。
## 注册账户
访问 (用你的ip:端口号替换 "127.0.0.1:11425"),你会看到 **OpenBox** 服务的主页。
用Email注册一个账号来使用服务。
你需要点击你邮箱中验证邮件中的链接来激活账号。
## 提交一个任务
这是一个如何用 **RemoteAdvisor** 和 **OpenBox** 服务交互的实例。
```python
import time
import datetime
import numpy as np
from openbox.artifact.remote_advisor import RemoteAdvisor
from openbox.utils.constants import SUCCESS, FAILED, TIMEOUT, MEMOUT
from openbox.utils.config_space import Configuration, ConfigurationSpace, UniformFloatHyperparameter
# Define objective function to tune
def townsend(config):
X = np.array(list(config.get_dictionary().values()))
res = dict()
res['objectives'] = [-(np.cos((X[0]-0.1)*X[1])**2 + X[0] * np.sin(3*X[0]+X[1]))]
res['constraints'] = [-(-np.cos(1.5*X[0]+np.pi)*np.cos(1.5*X[1])+np.sin(1.5*X[0]+np.pi)*np.sin(1.5*X[1]))]
return res
# Define the config space
task_id = time.time()
townsend_params = {
'float': {
'x1': (-2.25, 2.5, 0),
'x2': (-2.5, 1.75, 0)
}
}
townsend_cs = ConfigurationSpace()
townsend_cs.add_hyperparameters([UniformFloatHyperparameter(e, *townsend_params['float'][e])
for e in townsend_params['float']])
max_runs = 50
# Create remote advisor
config_advisor = RemoteAdvisor(config_space=townsend_cs,
server_ip='xx.xx.xx.xx',
port=11425,
email='xx@xx.com',
password='xxxx',
num_constraints=1,
max_runs=max_runs,
acq_type='eic',
surrogate_type='gp',
task_name="town_send_app")
# Simulate max_runs iterations
for idx in range(max_runs):
config_dict = config_advisor.get_suggestion()
config = Configuration(config_advisor.config_space, config_dict)
print('Get %d config: %s' % (idx+1, config))
trial_info = {}
start_time = datetime.datetime.now()
obs = townsend(config)
trial_info['cost'] = (datetime.datetime.now() - start_time).seconds
trial_info['worker_id'] = 0
trial_info['trial_info'] = 'None'
print('Result %d is %s. Update observation to server.' % (idx+1, obs))
config_advisor.update_observation(config_dict, obs['objectives'], obs['constraints'],
trial_info=trial_info, trial_state=SUCCESS)
incumbents, history = config_advisor.get_result()
print(incumbents)
```
+ 在创建**RemoteAdvisor**时,不要忘记设置 **server_ip, port** 和 **email, password**。然后将任务注册到服务器。
+ 一旦你创建任务后,你可以通过调用**RemoteAdvisor.get_suggestion()**来获取配置的建议。
+ 通过调用 **RemoteAdvisor.update_observation()** 在本地运行作业并将结果发送回服务。
+ 重复 **get_suggestion** 和 **update_observation** 来完成优化。
如果你对设置问题不熟悉,请参考
{ref}`快速入门教程 `。
## 在网页上监控一个任务
您可以随时监视任务并在**OpenBox**服务网页上查看优化结果。
访问 (用你的 ip:port 替换 "127.0.0.1:11425" )
登陆你的账户。
您将找到您创建的所有任务。单击按钮以进一步观察结果并管理任务。