Numerai-cliを使って予測ファイルの提出を自動化する方法


はじめに

今回の記事では、Numeraiに自動で予測ファイルを提出するNumerai CLIを紹介します。Numerai CLIとは、Numeraiの予測ファイルを自動で提出できるように支援するパッケージです。

今回、Numerai-cliの大幅なアップデートがあり、αテスターとして参加しました。そこで得られた知見を共有します。

特に、古いwindows(win8など)を使用している方は、本記事の手順通りにインストール・アクチべートすることをお勧めします。windows10,Linuxユーザーの方はすんなりとインストールできるらしいので、win8にかかわる部分は読み飛ばしてください。

Numeraiとは何?という方は私の過去の記事(日本語版 /英語版)をご参照ください。

また、公式が出しているNumerai-cliについての記事と、Youtubeはこちらです。
(34:11に少しだけ私が言及されました。ありがとうございます!)

目次

  1. AWS(amazon web service)の設定
  2. Numerai APIキーの取得
  3. Python・Dockerの設定
  4. numerai-cliの使い方 5.numerai computeを使用するまでの手順

筆者の環境

windows8.1 Pro, Intel Core i5 9600K メモリ 32GB

①AWS(amazon web service)の設定

 Numerai公式が用意した英語版の設定資料はこちら
 AWSはAmazonが運営しているクラウドコンピューティングサービスの一つです。Amazonが持っているCPU/GPUなどをオンラインで使用できるのでタスクの自動化に向いています。Numerai Computeノードをセットアップし、モデルをデプロイするまでを説明します。

1.AWSのアカウントを作成する。
AWSのアカウントの作成方法は本リンクを参照ください。連絡先情報・クレカの番号が必要となりますが、新規登録者は無料枠の分までは無料です。

2.AWSの請求を有効にする。
AWSの請求を有効にし、コードを実行できるようにします。公式曰く、月当たり5USD以下の費用がかかるそうです。

3.IAM ユーザーの事前設定。
IAM(Identity and Access Management)とはAWS のアクセスを安全に管理するためのウェブサービスのことです。
アカウント作成時点では、ルート権限を持つユーザーが作成されますが、IAMユーザーの設定をすると、特定の権限を持ったユーザーを作成することができます。今回は、Numeraiに自動で予測を提出するためだけのユーザーを作成します。
まず、本リンクを開いた後、JSONをクリックしてください。初期時点ではコードが入っていますが削除し、以下のコードをペーストしてください。

(*古いNumerai-cliを使用している方は、本部分が以下のコードと違う可能性があります。その場合は、以前のコードを削除し、以下のコードと置換してください。以前のコードのままだと、IAMの権限エラーが出て詰みます。)

json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "apigateway:*",
                "logs:*",
                "s3:List*",
                "ecs:*",
                "lambda:*",
                "ecr:*",
                "ec2:*",
                "iam:*",
                "batch:*",
                "s3:*"
            ],
            "Resource": "*"
        }
    ]
}

次のステップボタン(右下)を二回クリックすると、以下の画面になります。

本画面の名前の部分に、任意の名前(例えばcompute-setup-policy)を入れてください。こちらの名前を後で使います。

4.IAM ユーザーの作成
IAMユーザーの作成を行うために、本リンクから設定を行います。ユーザー名に先ほど設定した名前(例えばcompute-setup-policy)を入れ、プログラムによるアクセスにチェックを入れた後、次のステップを押してください。

既存のポリシーを直接アタッチを押し、先ほど作成した名前で検索してください。その後、チェックボックスにチェックをいれ、次のステップを二回押してください。

入力した後、ユーザーの作成を押せばIAMユーザーの設定は完了です。アクセスキー IDとシークレットアクセスキーが表示されるので、メモしてください。

②Numerai APIキーの取得

Numerai APIキーは設定から取得することができます。Create API Keyから
Upload submissionsにチェックを入れた状態でAPIキーを作成してください。

③Python・Dockerの設定

Windowsユーザー向けの設定方法を説明します。
numerai-cliを動かすには、python,dockerが必要です。自動でインストールするスクリプトが用意されているので、windows10を利用されている方は以下のコードを入力してください。

powershell -command "$Script = Invoke-WebRequest 'https://raw.githubusercontent.com/numerai/numerai-cli/master/scripts/setup-win10.ps1'; $ScriptBlock = [ScriptBlock]::Create($Script.Content); Invoke-Command -ScriptBlock $ScriptBlock"

このコードがうまく動いた人は以下の手順は不要です。

私はwindows8環境なので、以下の手順でPython,Docker-toolboxを導入しました。
特にDockerのインストールは多種多様なエラーが出ます。うまくいった例を説明しますが、環境によっては再現しないこともあることをご了承ください。

①Pythonのインストール
こちらのページからPython 3.9.2をインストールしてください。インストール後はPathを通してください。(個人によって異なりますが、例えば、C:\Users\USER\AppData\Local\Programs\Python\Python39\Scripts\ をPathに追加してください)

②Docker-toolboxのインストール
Dockerのインストールは『非常に』エラーが起きやすいです。以下の手順でインストールしてください。

i)visualboxのインストール
こちらのページから最新版のVisualboxをダウンロードし、インストールしてください。
ii)Docker-toolboxのインストール
こちらのページからDockerToolbox-18.02.0-ceをダウンロードし、インストールしてください。インストールするときに、Visualboxのチェックを『絶対に』外してください。(参考文献)
Gitのインストールは同時に行っても問題ありませんので、Gitにチェックを入れてください。

(このインストール方法に気が付くまで2日かかりました。Docker-toolboxからvisualboxをインストールすると、Numerai cliを使用できないので、必ずこの手順を守ってください)

iii)docker-machineの設定
docker quickstart terminalを起動し、以下のコードを入れてください。

docker run hello-world

以下の画像のように表示されればDockerの設定は問題ありません。

次に、Numerai computeで使用するdockerイメージの作成を行います。以下のコードを入力してください。

docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=2 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default

*Dockerが見つからない、などのエラーが出た場合は、パスが通っていないので、コントロールパネルからシステムの詳細設定を開き、環境変数→新規を押し、Pathを下図のように設定してください。
(docker toolboxの保存場所は環境によって異なる可能性があります。私の場合はC:\Program Files\Docker Toolboxでした。)

** Docker daemon not running. Make sure you've started "Docker Quickstart Te
rminal" and then run this command again.
というエラーが出た場合は

docker-machine restart default

でdefaultを再起動してください。

それでもエラーが出る場合は

docker-machine env

を入力して出てくる、

eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env)

を入力してください(環境によってこの部分は異なる可能性があります。)

これでdefaultのアクティブ化ができたはずです。(ACTIVEが*になればOK)

iv) pipとnumerai-cliのインストール
こちらのページを参考にpipをインストールしてください。
pipを入れたら、

pip3 install numerai-cli --user

として、numerai-cliをインストールしてください。

④numerai-cliの使い方

Docker quick start terminal上で"numerai --help"と打つと、使用できるコマンドリストが取得できます。

numerai copy-example:Numerai運営が用意したexampleファイルをダウンロードできます。

numerai copy-example -e tournament-python3 
numerai copy-example -e signals-python3 

などとすることで、Numeraiトーナメント用のexampleファイルや、Signals用のファイルをダウンロードできます。

numerai doctor:numerai-cliの状態を取得します。正常なら、以下のようになります。

numerai list-constants:デフォルトの状態を表示します。

numerai node:DockerFileをAWSにアップロードするためのコマンドです。config,deploy,testをよく使います。

numerai setup:Numerai cliとAPIキーを初期化するコマンドです。記事上部で用意したNumerai public IDやAWSのキーを保存できます。

numerai uninstall:Numerai cliに関連するファイル・AWSの設定などをすべてアンインストールします。

numerai upgrade:.numeraiフォルダにkeyファイルなどを格納します。

⑤numerai computeを使用するまでの手順

i)numerai setupを実行し、Numerai public IDやAWSのキーを保存する。
ii)numerai upgradeを実行し、.numeraiフォルダに必要な情報を移す
iii)numerai copy-example -e tournament-python3 を実行し、tournament-python3フォルダを作成する
iv)cd tournament-python3 として、tournament-python3フォルダに移動する。
v)prediction.pyを開き、MODEL_CONFIGS内のNoneを自分のモデルのUUIDに変更する。
(UUIDの取得はこちらから)

vi)numerai node -m tit_btcqash_compute config -e tournament-python3 -s mem-md (tit_btcqash_computeの部分は個人によって異なります。モデル名を入れてください)を実行する。
(本コードは、tournament-python3フォルダのdockerfileを使用して、mem-mdで構成されたCPU/メモリーをAWSで構成する、というものです)
vii)numerai node deploy を実行し、AWSに必要情報をアップロードする
viii)numerai node testを実行し、正常に動作するか確かめる。

i)~viii)が実行できればnumerai-computeを使用する準備はできました。
predict.pyを書き変えて自分のモデルをアップロードしてみましょう。pklファイルなどもpredict.pyと同じフォルダにおいておけば、自動でAWSにアップロードしてくれます。
なお、新しいモデルをアップロードするときは、

numerai uninstall

を実行してからi)~viii)の手順を実行するとうまくいくと思います。

それでは、よい日曜日を!

参考リンク

Numerai CLI wiki
Numerai Computeの設定方法(動画版、英語)
Numerai CLI tutorial
Numerai CLI Medium記事
Youtube

あとがき

win8ユーザーが新しくなったNumerai-cliを使えるようになるまで、数多のバグと闘いました。
Numerai-cli作者のarkさんに感謝します。

本記事が参考になった方はNMRを投げてくれると嬉しいです。
NMR:0x0000000000000000000000000000000000021d96