用于帮助部署numer.ai计算节点的库
numerai-cli的Python项目详细描述
数字命令
这是一个cli,用于设置一个numerai计算节点并将模型放置到该节点上。这在aws(amazon web服务)中建立了一个计算集群,并且其架构使运行成本最低(平均来说,您每月的花费不到1美元)。
问题还是反馈?加入我们的行列,请访问rocketchat
先决条件
您只需要:
- 使用API密钥设置AWS(Amazon Web Services)帐户
- 数字API键
- 您机器上的Docker设置
- python3(您的模型代码不必使用python3,但是这个cli工具需要它) < > >
- 用于存储Docker容器的ECR(弹性容器存储库)
- 在ECS(弹性容器服务)中运行计算作业的Fargate任务
- 安排计算作业运行的lambda端点
- 提交URL是您将提供给Numerai的Webhook URL。把这个留到以后。如果忘记了,副本将存储在
.numerai/submission_url.txt
- Docker_Repo将在下一步中使用,但您不必担心,因为它对您来说是全自动的
- 注册AWS帐户:https://portal.aws.amazon.com/billing/signup
- 创建具有管理访问权限的IAM用户:https://console.aws.amazon.com/iam/home?地区=US-EAST-1/USERS$新
- 为用户命名并选择"编程访问"
- 对于权限,请单击"直接附加现有策略",然后单击"管理员访问"旁边的复选框
- 保存上一步中的"访问密钥id"和"机密访问密钥"。以后您将需要它们 < > >
< > > - 您需要通过转到https://numer.ai/account" rel="nofollow">https://numer.ai/account并单击"您的API密钥"部分下的"添加"来创建API密钥。
- 为键选择以下权限:"上载提交"、"制作赌注"、"查看历史提交信息"、"查看用户信息"
- 您的密钥将弹出在页面左下角。把这个复制到安全的地方。
- 当您在"您的api密钥"下单击"查看"时,您的公共id将被列出。把这个也抄到安全的地方。 < > >
- 感谢在numerapi上的工作。
- 感谢在Numerox上的工作。
如果您需要获得这些设置的帮助,请参见"先决条件帮助" rel="nofollow">先决条件帮助部分。
这个项目已经在OSX、Windows10和Ubuntu18.04上进行了测试,但是理论上应该可以在Docker和Python可用的任何地方运行。
设置
使用以下命令安装此库:
pip3 install numerai-cli
快速启动
以下说明将在几分钟内为您设置计算节点:
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
numerai setup
将提示您输入aws和numerai api密钥。请参阅aws和numerai api key部分,了解如何获取这些信息。
您的计算节点现在已经设置好,可以运行了。在.numerai/submission_url.txt
文件中查看您将提供给numerai作为您的webhook url的提交url。转到您的数字帐户并选择"计算"部分将其输入。
默认的例子是notstake,因此您仍然需要每周手动执行该操作。或者,查看predict.py底部的示例代码,了解如何自动定位。
测试
您可以直接测试webhook url,如下所示:
numerai compute test-webhook
如果命令成功,它将以"挂起"状态快速返回。这意味着您的容器已计划运行,但尚未执行操作正式开始。
您可以通过运行:
numerai compute status
当它处于运行状态时,您可以查看日志:
numerai compute logs
您还可以在https://console.aws.amazon.com/ecs/home?region=us-east-1 35;/clusters/numerai submission ecs cluster/tasks或从您的容器中获取日志,网址为https://console.aws.amazon.com/cloudwatch/home?地区=US-EAST-1 logstream:group=/fargate/service/numerai submission
注意:集装箱需要一点时间来安排。第一次跑步也需要更长的时间(2-3分钟),随后的跑步开始得更快。
本地测试
您可以运行以下命令在本地测试容器:
numerai docker run
这将运行容器,就像它在云中运行一样。请记住,这将受到您机器的RAM的限制,或者在Windows/OSX的情况下,您可以增加分配给Docker的内存:Windows或OSX
常见问题
数字
不在路径中
numerai: command not found
尝试在OSX/Linux上运行~/.local/bin/numerai
或在Windows上运行%localappdata%\programs\python37-32\scripts\numerai.exe
。
或者,退出终端/命令提示符并重新打开它。默认情况下,pip会尝试将自己添加到您的路径中以供后续运行,但它要求您重新启动终端。
未安装Docker
...
subprocess.CalledProcessError: Command 'docker run --rm -it -v /home/jason/tmp/.numerai:/opt/plan -w /opt/plan hashicorp/terraform:light init' returned non-zero exit status 127.
...
subprocess.CalledProcessError: Command 'docker run --rm -it -v /home/jason/tmp/.numerai:/opt/plan -w /opt/plan hashicorp/terraform:light init' returned non-zero exit status 127.
如果您确定Docker已安装,请确保您的用户可以执行Docker,即尝试运行Docker ps
。如果是这个问题,则根据您的系统,您可以执行以下操作:
Windows/OSX
确保Docker应用程序正在运行并完成引导。可能需要几分钟才能完全准备好。单击"Docker托盘"图标时,应显示"Docker Desktop is Running"。
如果您在Windows上使用Docker工具箱,请确保已打开"Docker快速启动终端"。
Linux
sudo usermod -aG docker $USER
然后重新启动或注销/登录以使其生效。
错误的AWS API密钥
pip3 install numerai-cli
0
驱动器未共享
pip3 install numerai-cli
如果您得到:
pip3 install numerai-cli
1
然后你需要分享你的驱动器。有关详细信息,请参见https://docs.docker.com/docker for windows/shared drives" rel="nofollow">https://docs.docker.com/docker for windows/shared drives。
计算节点架构
数字设置
引擎盖下使用terraform设置具有以下功能的aws环境:
实际上,aws中还有很多其他的功能可以运行这个程序,但这三个功能是最重要的。lambda端点对应于您提供给numerai的提交url。ecr是numerai docker deploy将您的图像推送到的地方。fargate是您的任务在ecs中实际运行的地方,它是您希望查看是否有实际提交的内容的地方。
提交webhook url
这是您提供给Numerai的URL。它触发lambda并安排您的作业运行。一旦你在你的数字账户中设置了webhook,它将在新一轮开放后的周六早上被调用,如果你的工作失败了(由没有ubmitted all submitted successfully)然后将在24小时后再次触发。
Docker示例
让我们看看docker示例的文件:
pip3 install numerai-cli
2
文档文件
然后让我们看看dockerfile:
pip3 install numerai-cli
3
所以逐行分解:
pip3 install numerai-cli
4
此dockerfile继承自python:3
,它为我们提供了一个工作的python环境。
pip3 install numerai-cli
5
然后添加requirements.txt文件,pip从中安装每个需求。add
关键字将从当前目录中提取一个文件并将其复制到Docker容器。
pip3 install numerai-cli
6
之后,我们添加当前目录中的所有内容。这将包括您的所有代码,以及您保存到当前目录的任何其他文件,如序列化模型。
pip3 install numerai-cli
7
这些都是Docker Aguments,numerai train/run/deploy
将始终传递到Docker中。然后将它们设置在您的环境中,以便您可以像这样从脚本中访问它们:
pip3 install numerai-cli
8
pip3 install numerai-cli
9
这将设置运行Docker容器的默认命令。这在numerai docker train
命令中被覆盖,但在使用numerai docker run
和numerai docker deploy
型号.py
模型代码就在这里。我们正在使用Numerox,但实际上这个文件可以承载任何类型的模型。
列车PY
运行数字码头列车时运行的代码
预测.py
在运行numerai docker run时运行并在执行numerai docker deploy后部署到numerai compute节点中运行的代码
命令
数字设置
以下命令将在aws中设置完整的数字计算群集:
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
0
如果这是您第一次运行,它还将要求您的aws和numerai api密钥。这些键存储在$HOME/.numerai中,以备将来运行时使用。
关于如何设置aws集群,会有很多输出,但最重要的部分是在最后:
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
1
此命令是等幂的,可以安全地多次运行。
Numerai Docker复制示例
如果您还没有安装好模型,那么您应该复制Docker示例。
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
2
警告:这将覆盖以下文件(如果存在):dockerfile、model.py、train.py、predict.py和requirements.txt
还有一个使用多个数字帐户的更复杂的示例:
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
3
以及使用r:
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
4
Numerai Docker列车(可选,但强烈建议)
通过运行train.py来训练您的模型。假设存在名为train.py
的文件,并将模型序列化到此目录。如果您想获得如何做到这一点的灵感,请参见示例。
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
5
numerai docker run(可选)
要在本地测试Docker容器,可以使用此命令运行它。这将运行dockerfile的默认命令,默认示例为predict.py
numerai docker run
Numerai Docker部署
构建并将Docker图像推送到AWS Docker Repo
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
7
数字销毁
如果您想删除aws环境以节省成本或从头开始,可以运行以下命令:
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
8
这将删除所有内容,包括lambda url、docker容器和相关任务,以及所有日志
此命令是等幂的,可以安全地多次运行。
故障排除
容器消耗了太多的内存和被杀死
默认情况下,数字计算节点限制为8GB的RAM。如果需要更多,可以打开.numerai/variables.tf
并将fargate_cpu
和fargate_memory
设置更新为以下设置:
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
9
30720MB=30GB,是亚马逊能够支持的最大容量。
完成此操作后,重新运行数字设置
注意:这将增加运行计算节点的成本,请参见http://fargate-pricing-calculator.site.s3-website-us-east-1.amazonaws.com/" rel="nofollow">http://fargate-pricing calculator.site.s3-website-us-east-1.amazonaws.com/了解估计成本。您只需支付运行时间,四舍五入到最接近的分钟。
计费警报
不幸的是,没有自动设置计费警报的方法。如果您希望在成本超过某个阈值时收到警报,请按照https://www.cloudberrylab.com/resources/blog/how to configure billing alerts for-your-aws-account/中的说明设置一个警报。
我们估计每月费用不到5美元,除非你的计算每周花费超过12小时。还要记住,如前一节所述增加RAM/CPU将增加您的成本。
先决条件帮助
AWS/H3>
您需要注册aws并创建一个管理iam用户
数字API键
巨蟒
如果您还没有python3,可以从https://www.python.org/downloads/" rel="nofollow">https://www.python.org/downloads/获取它,或者从系统的包管理器安装它。
conda也是一个很好的选择,可以让python环境开箱即用
码头工人
Mac操作系统
如果安装了自制程序:
numerai compute test-webhook
0
否则,您可以在https://hub.docker.com/editions/community/docker-ce-desktop-mac" rel="nofollow">https://hub.docker.com/editions/community/docker ce desktop mac上手动安装
您还应该通过更改以下内容中的"内存"来增加分配给虚拟机的RAM:https://docs.docker.com/docker for Mac/advanced
窗口
在https://hub.docker.com/editions/community/docker-ce-desktop-windows" rel="nofollow">https://hub.docker.com/editions/community/docker-ce-desktop-windows上安装Docker Desktop
安装Docker后,必须启用驱动器共享:https://docs.docker.com/Docker for Windows/共享驱动器
您还应该通过更改以下内容中的"内存"来增加分配给虚拟机的RAM:https://docs.docker.com/docker for windows/advanced
Docker工具箱
如果您的机器没有启用hyper-v,那么您必须安装docker toolbox:https://github.com/docker/toolbox/releases" rel="nofollow">https://github.com/docker/toolbox/releases
安装完成后,打开"Docker快速启动终端",运行以下命令以增加内存:
numerai compute test-webhook
1
另外请注意,您的代码必须位于用户目录下的某个位置(即C:\用户\用户名\任意文件夹)。这是Docker工具箱的限制,否则无法正确共享路径。
Linux
通过发行版安装Docker。
ubuntu/debian:
numerai compute test-webhook
2
还要确保将您的用户添加到Docker组:
numerai compute test-webhook
3
然后重新启动或注销/登录以使其生效。
对于其他Linux发行版,请查看https://docs.docker.com/install/linux/docker-ce/centos/" rel="nofollow">https://docs.docker.com/install/linux/docker-ce/centos/并在侧栏上找到您的发行版。
卸载
破坏AWS环境
mkdir example-numerai
cd example-numerai
numerai setup
numerai docker copy-example
numerai docker deploy
8
然后卸载软件包:
numerai compute test-webhook
5