RyzenThreadripper3970X バックテストで見えた驚異のスピード!

この投稿文は次の言語で読めます: 日本語

Ryzen Threadripper とは?

米国半導体メーカーAMD社が製造する高性能CPUシリーズです。このシリーズは特にハイエンドデスクトップ(HEDT)市場を対象としており、より高度なマルチタスク処理や、コンテンツ制作、データ分析、ゲーム開発などの要求の高い作業を行うために設計されています。

CPUコア数が圧倒的に多く、Threadripper 3970Xの場合、CPU1個で最大32コア64スレッドを保有しています。 また、CPU個数だけでなくクロック数も比較的高く、CPUの処理性能の総合評価においては外メーカーのCPUと比較しても非常に高い性能を誇っています。

スポンサーリンク

なぜ Threadripper 3970Xが良いか?

バックテストはCPU性能が重要

Threadripperについては、「多数のCPUコアがあっても実用性がない」というレビューが散見されますが、MT5を使用する場合、間違いなく最高のパフォーマンスを発揮します。

バックテストを実行する際、特にパラメータの組み合わせを最適化するときには、CPUのスレッド数が多いほど、同時に実行できるテスト数が増えるからです。しかし、MT5のバックテストはCPUベースでしか実行できないため、大量のCPUを搭載したマシンが真価を発揮できるため、バックテストを大幅に高速化することができます。

Threadripper 3970Xは総合性能でも優秀

PassMarkのベンチマークソフトを用いて、私が所有する2台のPCのCPU性能を比較してみました。比較対象はIntel Xeon E-2176M(6コア12スレッド)とRyzen Threadripper 3970X(32コア64スレッド)です。

左:Intel Xeon E-2176M (6コア 12スレッド)
右:Ryzen Threadripper 3970X (32コア 64スレッド)

Xeonシリーズも高性能なCPUですが、それに比べてThreadripper 3970Xの性能は圧倒的で、そのスコアの差は驚愕のものでした。このベンチマークソフトの統計では、Threadripper 3970XのPercentileが99%に達しており、これはワールドランキング上位1%以内ということを示しています。

さらに、PassMark社のCPUベンチマークランキングでも3970Xが首位に輝いていました。ランキング内の3970Xの平均スコアは48,020でしたが、私の環境では50,486を記録しました。

https://www.cpubenchmark.net/high_end_cpus.html

スポンサーリンク

環境整備

次に、Threadripper 3970Xを搭載したPCをバックテスト専用の端末としてセットアップします。具体的には、MT5をインストールし、その後でテスト用のエージェントを起動するだけです。

ですが・・なかなか簡単には進まない問題がありました。

MT5インストール

特に問題が発生することはありませんでした。

MetaTester エージェント設定

MT5をインストールしたら、ストラテジーテスター エージェントマネージャーを開き、テストで利用するエージェント数を指定します。しかし、ここで問題が生じました。32コア64スレッドの端末なので、64エージェントまで指定できるはずだったのですが、最大で32エージェントしか指定できませんでした。

図の通り、32エージェントまでしか指定できません。

タスクマネージャを見る限り64スレッドを認識しているのに、エージェントの最大数が32。。 このままではせっかくのCPUの暴力度合いが半減してしまいます。

ちなみに、MT5のバージョンはBuild 2280。

※少し古いリリースバージョンのMT5で試したところ、64エージェントまで指定可能な状態になりましたが
途中からエージェントマネージャが開かなくなったり、なんとなく挙動が怪しかったので、Build 2280で動作するような回避策を検討しました。

回避策

何度かMT5を再インストールしたものの、やはりMT5エージェントは最大32まで。

やむを得ず、1台のPCの中に、MT5アプリ複製配置して、それぞれのアプリからエージェントマネージャーを起動します。

├MT5_1
│ └エージェントマネージャー1
│   └32エージェント(port 2000~)
└MT5_2
└エージェントマネージャー2
└32エージェント(port 3000~)

各エージェントにはユニークなポート番号が割り当てられるように、重複しないポートのレンジで割当を行うことで64エージェント分を同時に起動することができました。

1台のPCに複数のMT5環境を用意する方法

MT5環境を複数用意する際は、インストール作業を複数回行う方法(但し、インストールディレクトリは異なるパスにする) でも良いですが、インストール済のMT5ディレクトリを複製するだけでも動作しますが、コピーする際は、MT5はアプリ本体が格納されるフォルダとMT5が使用するデータ(EAやインジケーター、ヒストリカルデータなど)を管理するフォルダが異なるため、それぞれをコピーする必要があります。

※これは、一般的なインストールディレクトリであるC:\Program Files\ 配下は、アプリインストールを目的とした場所であり、アクセスのためには管理者権限を必要とします。そこに一般的な権限で読み書きを行いたいデータを配置することは権限上の問題が起きたり、セキュリティリスクにつながる恐れがあることからインストールディレクトリとデータディレクトリが分割されているものと考えられます。

MT5データディレクトリは、 %APPDATA%\MetaQuotes\Terminal\ 配下に 自動で作成されますので、必要があればこれも複製しますが、エージェントマネージャを動作させるだけであればインストールディレクトリのみを複製しても問題ありません。(データディレクトリは自動で作成されます)

 

【参考情報】データディレクトリも含めて一括コピーできる手軽な方法

頻繁にMT5のアプリを複製する必要がある場合、都度データディレクトリを意識することは面倒になります。

対策方法の一つとして、MT5のインストールディレクトリをC:\Program Files\以外 (例えば%USERPROFILE%配下)とした上で、
terminal.exe を起動する際に /portable 引数をつけておけば、MT5インストールディレクトリ配下にデータフォルダも配置されます。

これによって、インストールディレクトリのルートから複製すれば、アプリもデータも一括でコピーできるようになります。

起動の度に /portable 引数雨を入力するのは手間がかかりますので、ショートカットファイルを作成し 「リンク先」に引数追加、ショートカットファイルからMT5を起動すれば運用の手間もありません。

エージェントを起動する

無事に64エージェントが起動しました。

その他設定

ローカルネットワーク内において、他のPC上にあるMT5からこのPC上のエージェントを使いたい場合は、ファイアウォールの受信規則を設定します。
※エージェントマネージャを2つ起動する場合、それぞれのアプリに対して設定が必要です

 

バックテスト最適化を実行

稼働確認

バックテスト最適化を開始すると、64コアがフル稼働しています。

 

処理性能

Xeon E-2176M のPCと 3970Xの2台をローカルネットワーク内に配置。 都合 12+64 = 76コア同時使用で最適化を行いましたが、
前者の方が1セットで割り当てられるタスクをこなし切るまでに時間がかかってしまうために、3970Xの方は1セット終わる度に若干のアイドル時間が発生。
結果、適度にCPU温度が下がった(大体60℃~80℃くらい)せいか、64エージェント起動しても大きな性能劣化はありませんでした。

エージェント当たりの処理タスク数は、Xeon E-2176と大差なし。  3970Xは単一CPUの処理性能もかなり高い方なので差が開くかな?と期待したのですが。

この「1セット」のタスクの割り振りはMT5が自動で行うものなので、アイドル時間が発生していた3970X側にもう少し多くタスクが割り振られていれば
完了タスク数に差が出ていたのかもしれません。 この辺りの割り振りの最適化は、直近のMT5バージョンアップでも対策されていた部分だったはずなので、
今後も継続して改善されることを期待したいと思います。

PCの価格

某BTOメーカーで調達。 デスクトップPC1台で、なんと 800,000円!!!

しかし、同等論理コア数をIntel製CPUで実現しようと思うとXeon プロセッサを複数個搭載するような構成になってしまい、
1,000,000円は軽く超えることを考えると、3970Xのコスパは非常に良い方だと言えます。

PCの構成の概略は以下のとおりです。

OS            : Microsoft(R) Windows10 Pro (64bit)
CPU          : AMD Ryzen Threadripper 3970X [3.7GHz/32Core/TDP280W] MOTHER  : ASUS PRIME TRX40-PRO [AMD TRX40chipset] MEMORY  : 128GB[16GB*8枚] DDR4-3200
SSD          :  Western Digital WD Black WDS200T3X0C [M.2 PCI-E SSD 2TB]
GPU          :  GeForce RTX2080Ti 11GB
POWER     : Corsair HX1000i 1000W/80PLUS Platinum

消費電力

消費電力が見えるOAタップを使用し、全CPUを使用して最適化処理を実行しているタイミングの消費電力を測定したところ、概ね500W程度となりました。

GPUの用途

MT5でもGPUを使用できる可能性はあります。 標準でOpenCLに対応しており、 MQL5言語からOpenCLを使用した開発を行うことで、GPU性能を使用した処理を実装することができます。

MT5は行列計算系の関数にも対応しており、ディープラーニング系の処理を実装することも出来ることからGPU活用の可能性も大いにあるのですが、

しかし、GPUを使用するEAを開発した後の、配布プロセスまで視野に入れた場合、EA利用者のPC上でもOpenCLの実行環境整備やGPU調達も必要になります。

 

これは廉価なVPSでは十分なGPU性能を持っていないことも考慮すると運用時の敷居がかなり上がってしまいます。

やるならばシグナルプロバイダーのみがGPU使用版EAを稼働させ、一般ユーザーはシグナルを受信するのみ・・・ といった運用が現実的と思いますが、

シグナルプロバイダーとして活動するためには投資助言業の資格が必要になり、こちらのハードルも極めて高いものになります。

諸々の事情を踏まえ、EAを配布したいと思っている私にとっては検証用途のみでの使用となりそうです。

 

ハイエンドPCを用意せずにコンピューティングリソースを確保する方法

ハイエンドPCを調達する以外にもハードウェアリソースを用意する方法があります。
一応、それらも十分に検討した上で購入に至ったので、その辺の経緯も整理しておきます。

案1. MQL5 クラウドネットワーク使う

MQL5クラウドネットワークはとても便利ですが、残念ながら使えないケースがあります。

  • DLLが組み込まれているEA
  • カスタム銘柄に対してバックテストを行う場合

等はMQL5クラウドネットワーク経由でバックテストが実行できません。

EAの仕組みや検証プロセスが高度化するにつれて上記の問題に直面しやすくなることから、この方法は現実的な手段ではなくなってしまいます。

案2. クラウドプラットフォームなどでコンピューティングリソースを調達した方が良いのでは?

AWSやAzure環境等を使用する方法は、短期間の用途で必要な量のリソースを使う場合に効果を発揮する一方で、長期にわたって大量のリソースを必要とするような使い方をするとかなり割高になります。

PC調達コスト、稼働時の電気料金を考慮しても、大量のバックテストを継続的に実行するのであれば物理PCを買った方が圧倒的に安く済みます。

ネックになるのは故障リスクですが、修理はPCメーカーのサポートで概ねカバーできますし、あとは業務停止リスクくらいが残りますが、これもある程度許容できるならば物理PCを買った方がメリットが大きいです。

案3. 安い物理PCでスケールアウトした方がコスパが良いんじゃない?

これが出来るところがMT5の魅力ではあるのですが、大量にハードウェアを持つのは運用管理が面倒(故障、修理の問題)であったり、バックテスト時にカスタム銘柄を使用する場合はローカルネットワーク内でも他PCのエージェントを使用した分散処理は実施できません。

※最適化そのものを複数並列実行し、実行先のPCを分散して制御すれば、カスタム銘柄の問題は解決可能です

まとめ

無事、64コアをフルに使うことができました。

1コア当たりの実行タスク数が従来持っていたPCと差がないならば、 (12+64) / 12 = 6.3倍の処理量をこなせるようになったことになり、
所要時間が12時間かかる最適化がわずか2時間で完了できるようになったと考えると、開発→検証→改善というサイクルをその日の内に実施できるようになり、開発速度の大幅な向上が期待できます。

これらを活用してより良い製品開発を進めていければと思います。

MT5用EA Helios 6.0を公開しました!!!

EAは無料でご利用頂けます

上記EAは無料でご利用いただけます。 ご興味をお持ち頂けましたら、以下のページに概要と申込ページへのリンクがありますので、そちらからお問い合わせください。

MT5を使うなら、海外の証券会社がオススメ!

国内証券会社は追証リスクある上に、ほとんどの証券会社でMT5を利用することができません。

入金額以上のリスクを負わずに済むゼロカット制度が適用されるのは海外証券会社のみとなります。

XMHFM等、信頼できる海外証券会社を選択することで、

  • 低スプレッド環境でトレードが出来る
  • トレードの遅延が少なく品質が安定している
  • 入金ボーナスで、少額からトレード可能
  • 入出金トラブルがない

等、多くのメリットを享受できます。 MT5を使う際は、同時に海外証券会社での口座開設もご検討ください。

EA利用者限定の特典あり!

EAをリアル口座で活用頂いている方への特典として、独自開発したインジケーターを無料でご利用いただけます。

自動売買ツールを活用すればトレードそのものはプログラムが規則に従い継続的に行うことができますが、

どのEAを、いつ起動/停止するのかを判断するのは人間の役割となります。

相場環境の分析が必要になることもありますので、是非これらの無料インジケーターを使用して堅実な投資の実現にお役立てください。

 

新着記事をお見逃しなく!

新しいEAや無料インジケーターの情報は、随時ブログ記事として公開していきます。

新着記事を見逃さないためには、ブログの通知設定が便利です。

以下の画像のように通知設定の許可ボタンが表示されたら是非クリックしてください。

通知許可設定

 

 

スポンサーリンク

Twitterでフォローしよう

おすすめの記事