AWSで仮想通貨のGPUマイニング(採掘)をやってみた

AWSで仮想通貨のGPUマイニング(採掘)をやってみたhosiiのメモ帳最近のビットコイン高騰など、ネット界隈では何かと仮想通貨が話題となっている。
仮想通貨がどんなものか勉強も兼ねて、AWSのEC2インスタンスを使って実際に採掘をやってみた。
一番最後に、収益がどのくらいになったか結果も記載しています。

本記事の読者の想定

本記事は以下レベルの読者を想定している。仮想通貨に関する話がメインであるため、AWSの詳しい説明は割愛している。
・AWSでEC2インスタンスを立てたことがある
・Linuxの基本的な操作ができる
・これから仮想通貨のマイニングについて勉強しようとしている

仮想通貨の入手手段

仮想通貨を入手するには、以下2種類の手段がある。
・日本円や米ドルで購入
・自分で採掘

1つ目の手段は、仮想通貨取引所に自分の口座を開設し、仮想通貨を購入する方法である。
日本円や米ドルといった実通貨を仮想通貨交換所の自分の口座へ入金し、そのお金で仮想通貨を購入する。
イメージとしては株の取引に近い。

【仮想通貨取引所の例】
bitFlyer
Zaif

2つ目の手段は、自分のPCに仮想通貨マイニングツールを導入し、仮想通貨をマイニングする方法である。
仮想通貨はブロックチェーンと呼ばれる管理台帳に価値を記録し、世界中のサーバで分散管理されている。ブロックチェーンは名前の通りブロック(価値の記録)が鎖のように順番につながっており、一番最後のブロックをもとに計算されたハッシュ値を見つけることで、鎖の一番最後に新しいブロックを追加することができる。
このハッシュ値を計算することをマイニングと呼び、マイニングを行った人には見返りとしてマイニングした仮想通貨をもらうことができる。

【参考】
https://ja.wikipedia.org/wiki/ブロックチェーン

今回は、2つ目のマイニングという方法で仮想通貨を入手していみた。

仮想通貨のマイニング方法

個人が仮想通貨をマイニングするためには、マイニングプールと呼ばれる仮想通貨の共同採掘サービスに登録する。
貴金属でいうところの鉱山の組合に入るようなものだ。
マイニングプールのサービスに登録するとウォレットと呼ばれる自分用の財布が付与され、マイニングして得られた仮想通貨はウォレットに溜まっていく。
ウォレットに溜まった仮想通貨は仮想通貨取引所の口座へ移送でき、そこから日本円に交換することも可能。

仮想通貨をマイニングする際は、マイニングツールを自分のPCにインストールし、マイニングプールを登録することでマイニングが始められる。

Minergateへの登録

まずはマイニングプールのサービスへ登録を行う。
今回は、「MinerGate」というサービスへ登録する。MinerGateはマイニングツールを公開しており、GUI画面で簡単にマイニングが行える。

https://minergate.com

トップページにアクセスしたら、右上の「Sign up」をクリックし、ユーザ登録する。
この時入力するメールアドレスとパスワードはマイニングツールのセットアップでも使用する。

マイニングプールへの登録はこれで完了。

AWSでマイニング用サーバの構築

次に、マイニングを行うサーバをAWS場で構築する。
仮想通貨のマイニングはCPUとGPUを使用する2つの方法があるが、GPUのほうが効率的にマイニングが行えるため、EC2インスタンスの中でもGPUが使用可能なインスタンスを構築する。

EC2インスタンスの詳細な作成手順は割愛するが、以下自分が構築した時の環境メモ。

■AMI: Ubuntu Server 16.04 LTS (HVM), SSD Volume Type – ami-cd0f5cb6
■インスタンスタイプ: g2.2xlarge
■自動割り当てパブリックIP: 有効化
■セキュリティグループ: 自宅グローバルIPからのインバウンドのSSHとTCP/5901を許可

インストール後は、インスタンスにSSHで接続して以下のコマンドを実行。

# パッケージのアップデート
sudo apt-get update
sudo apt-get -y upgrade

# GUI環境のインストール
sudo apt-get install -y lxde

#VNCサーバのセットアップ
sudo apt-get install -y vnc4server
mkdir ~/.vnc
ln -s /etc/X11/Xsession ~/.vnc/xstartup
vncserver #VNC接続に使うパスワードを聞かれるので2回入力する
sudo vi /etc/rc.local #ファイル最後尾"exit 0"の上段に以下を追記
  su -l ubuntu -c "vncserver"

ここまで実行したら、自分のPCからEC2インスタンスにVNCで接続できることを確認する。

【参考】(VNC接続部分)
CentOS6.4にVNCを導入してMacからリモートログインする

GUI接続後は、EC2インスタンスのGUI画面からFirefoxを起動し、NVIDIAのサイトに接続、グラフィックドライバをダウンロードする。
URL: http://www.nvidia.com
サイトへ接続後は、「USA/Canada」を選択。

「DRIVERS」から「ALL NVIDIA DRIVERS」を選択。

g2インスタンスはNVIDIA GRID K520を使用しているので、それに合わせて以下のように入力しSEARCHをクリック。

ドライバの詳細が表示されるので「DOWNLOAD」をクリック。

規約を確認し、同意できる場合は「AGREE & DOWNLOAD」をクリック。

ファイルのダウンロードウィンドウが表示されるので、「Save File」をクリックしてダウンロード。

ここから先は、再びSSH接続で作業する。先ほどダウンロードしたドライバファイルを実行する。
GUIが起動した状態では怒られるので、一旦CUIモードでOSを起動し直してからインストールする。

sudo systemctl set-default multi-user.target 
sudo shutdown -r now
#再起動完了後に以下を実行
sudo apt-get install -y build-essential cmake
cd ~/Downloads/
sudo sh NVIDIA-Linux-x86_64-367.57.run

ドライバプログラムを起動すると、ライセンスに同意するか聞かれるので、「Accept」を選びEnterキーを押下する。

X configurationの設定を行うか訊かれるのでYesを選択。

完了メッセージが表示されるのでOKを選択。

デフォルトの起動モードをGUIモードに戻し、一旦OSを再起動。GPUが認識されているか確認する。

sudo systemctl set-default graphical.target 
sudo shutdown -r now
# 再起動後以下を確認。
nvidia-smi 

Mon Aug 21 07:46:24 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N/A |
| N/A   34C    P0    41W / 125W |      0MiB /  4036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

マイニングツールのインストール

EC2インスタンスにVNC接続し、Firefoxを起動してMinerGateのHPにアクセスする。

https://minergate.com

トップ画面の「Download Miner and Start Mining」をクリックする。

今回構築したサーバに合わせて、Ubuntu 16.04以上用のインストールパッケージの「Get it」をクリックする。

ダウンロードが完了した後、SSHで以下コマンドを叩きインストールする。

cd ~/Downloads/
sudo dpkg -i minergate.deb

インストールが完了すると、デスクトップ画面上、タスクバーのプログラム一覧「Office」カテゴリにMinerGateのソフトウェアが追加されるので、クリックして起動する。

MinerGateが起動すると、メールアドレスの入力が促されるので、MinerGateのホームページで登録したときのメールアドレスを入力する。

登録完了後は、画面右上のツルハシマークをクリックし、マイニングしたい通貨を選び、Start Miningをクリックする。CPU、GPUそれぞれ平行してマイニングが可能な模様。CPUのコア数とGPUの強度はそれぞれ最高値にしてみた。

なお、マイニングする通貨の難易度によって、採掘できる量が異なってくる。ビットコイン(BCN)やイーサリウム(ETH)は難易度が高過ぎてほとんど採掘できない状況なので、現状難易度の低いモネロ(XMR)で採掘をしてみた。

採掘結果は、MinerGateのHP上Dashboardで確認できる。複数のサーバで同時平行してマイニングしていた場合も、合計値が表示されるので便利だ。
https://minergate.com/internal

ここまで完成したら、一度EC2インスタンスのイメージをプライベートAMIとして取っておくと便利かも。
スケールアウトさせたい場合は、AMIから同じインスタンスタイプでインスタンスを立てることで2台目以降は設定不要となる。

結果

実際にマイニングさせている状態で、MinerGateの画面上どのくらいハッシュが計算できているか表示を確認することができる。
おおよそだが、CPUとGPUを合わせて350 H/sくらいの性能だろうか。

MinerGateのHPに、この性能をもとにどのくらいの仮想通貨をマイニングできるか指標を示したページがある。
https://minergate.com/calculator/cryptonote

ここで、先ほどの350 H/sの数字を入力してみたところ。。。
0.00050 Monero/1時間、米ドルに直すと0.03573 USD/1時間となった。この値が、EC2 g2.2xlargeインスタンスがマイニングできる1台あたりの採掘量である。

それに対して、EC2インスタンスの料金はというと。。。
オンデマンドインスタンスで0.65 USD/1 時間
https://aws.amazon.com/jp/ec2/pricing/on-demand/
スポットインスタンスで0.1206 USD/1 時間(2017/8/21現在)
https://aws.amazon.com/jp/ec2/spot/pricing/
であった。

今回の検証結果としては、スポットインスタンスを使ったとしても超大赤字である。
何かGPUのチューニングできないか、そもそももっと最適なインスタンスが無いか、時間ができたら更なる調査をしてみたい。

AWSで仮想通貨のGPUマイニング(採掘)をやってみた」への2件のフィードバック

  1. horgmo

    実は私も1年くらい前に、AWSでマイニングを考えた時がありました。
    でもおそらく高確率で赤字だろうと思い実施しませんでした。
    検証ありがとうございます。
    自分もマイニングやってるので、お互い頑張りましょう☆

    自分もyoutubeでマイニング配信しております^^

    返信
    1. hosii 投稿作成者

      >> horgmo さん
      AWSの場合、GPU単体のスペックアップができないため、高性能なCPUやメモリの分まで費用が掛かり割高ですね。GPU以外のスペックを抑えられる分、自作リグが個人でマイニングするための最適解なのかもしれません。

      返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です