用于帮助部署numer.ai计算节点的库

numerai-cli的Python项目详细描述


数字命令

circlecipypi

这是一个cli,用于设置一个numerai计算节点并将模型放置到该节点上。这在aws(amazon web服务)中建立了一个计算集群,并且其架构使运行成本最低(平均来说,您每月的花费不到1美元)。

问题还是反馈?加入我们的行列,请访问rocketchat

架构图

先决条件

您只需要:

  1. 使用API密钥设置AWS(Amazon Web Services)帐户
  2. 数字API键
  3. 您机器上的Docker设置
  4. python3(您的模型代码不必使用python3,但是这个cli工具需要它)
  5. < > >

    如果您需要获得这些设置的帮助,请参见"先决条件帮助" 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的内存:WindowsOSX

    常见问题

    数字不在路径中

    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.
    

    如果您确定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
    
    1

    然后你需要分享你的驱动器。有关详细信息,请参见https://docs.docker.com/docker for windows/shared drives" rel="nofollow">https://docs.docker.com/docker for windows/shared drives。

    计算节点架构

    数字设置引擎盖下使用terraform设置具有以下功能的aws环境:

    • 用于存储Docker容器的ECR(弹性容器存储库)
    • 在ECS(弹性容器服务)中运行计算作业的Fargate任务
    • 安排计算作业运行的lambda端点

    实际上,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 runnumerai 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
    • 提交URL是您将提供给Numerai的Webhook URL。把这个留到以后。如果忘记了,副本将存储在.numerai/submission_url.txt
    • Docker_Repo将在下一步中使用,但您不必担心,因为它对您来说是全自动的

    此命令是等幂的,可以安全地多次运行。

    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_cpufargate_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用户

    1. 注册AWS帐户:https://portal.aws.amazon.com/billing/signup
    2. 创建具有管理访问权限的IAM用户:https://console.aws.amazon.com/iam/home?地区=US-EAST-1/USERS$新
      1. 为用户命名并选择"编程访问"
      2. 对于权限,请单击"直接附加现有策略",然后单击"管理员访问"旁边的复选框
      3. 保存上一步中的"访问密钥id"和"机密访问密钥"。以后您将需要它们
      4. < > >< > >

        数字API键

        1. 您需要通过转到https://numer.ai/account" rel="nofollow">https://numer.ai/account并单击"您的API密钥"部分下的"添加"来创建API密钥。
        2. 为键选择以下权限:"上载提交"、"制作赌注"、"查看历史提交信息"、"查看用户信息"
        3. 您的密钥将弹出在页面左下角。把这个复制到安全的地方。
        4. 当您在"您的api密钥"下单击"查看"时,您的公共id将被列出。把这个也抄到安全的地方。
        5. < > >

          巨蟒

          如果您还没有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

          贡献

          • 感谢在numerapi上的工作。
          • 感谢在Numerox上的工作。

          欢迎加入QQ群-->: 979659372 Python中文网_新手群

          推荐PyPI第三方库


热门话题
Java如何提取整数的最后一位,然后显示到小数点的那个数字?   如何获取Java8流中所有元素的字符串表示形式   使用AWS Lambda(java)中的环境变量更改Log4j级别   java制作图标在jframe上运行   java如何从多个本地sql数据库表中获取结果?   日期Java SimpleDataFormat使用带有jolly字符的模式   java在安卓软键盘上监听每个按键事件   java当使用新的JTA事务时,其他事务中的PersistenceContext会发生什么变化?   java链接列表错误   java如何修复代码来解决这个问题?   运行sql查询Hadoop Java时,在FROM子句中获取错误“输入不匹配”为“预期来自附近”)   java我想存储3到100之间的素数,并将它们存储在一个数组中,而不使用构造函数   如何使用java将文件发布到URL   java中curl命令的等价物   java Google活动识别意向服务在某些设备上不起作用