MarkLogic10(GPU対応版)のインストール

# はじめに
2019年6月にMarkLogicの新バージョン10がリリースされました。
このバージョンはGPUに対応しており、機械学習のライブラリとしてCNTKのAPIを実装しています。MarkLogic上でXQueryやJavascriptを使用した機械学習のアプリケーションを開発・実行できます。

GPU対応版のMarkLogicのインストールにはCUDAが必要になります。本記事ではインストール方法をご紹介します。

# 環境
以下の環境を使用します。

| 環境 | バージョン等 | 備考 |
| --- | --- | --- |
| OS  | CentOS 7.6 | |
| MarkLogic | 10.0-1(GPU対応版) | https://developer.marklogic.com/products/marklogic-server/10.0 |
| CUDA | 10.1.168_418.67 | https://developer.nvidia.com/cuda-toolkit |
| GPU | GeForce GTX1070Ti | |

# インストール手順
nouveauドライバの無効化、CUDAのインストール、MarkLogic10のインストールの流れになります。

## nouveauドライバの無効化
GUIを使用している場合CLIモードに変更し、nouveauドライバを無効化します。

```sh
# ランレベルの確認
$ sudo systemctl get-default
graphical.target

# ランレベルを3(CLI)に変更
$ sudo systemctl set-default multi-user.target
$ sudo systemctl get-default
multi-user.target

# nouveauドライバの無効化
$ sudo dracut --omit-drivers nouveau /boot/initramfs-$(uname -r).img $(uname -r)

# modprove.confとnouveau_blacklist.confの編集
$ vi /etc/modprobe.d/modprobe.conf
$ vi /etc/modprobe.d/nouveau_blacklist.conf

# 以下の2行を追記
blacklist nouveau
options nouveau modeset=0

# 再起動する
$ sudo reboot

# nouveauドライバが無効となっている事を確認する
$ sudo lsmod | grep nouveau
```

## CUDAのインストール
NVIDIA社のDeveloperサイトからCUDA TookKitをダウンロードします。インストーラーの種類は3種類ありますが、今回はrunfile(local)を使用します。

インストールする内容など質問されますが、CUDA DriverとCUDA ToolkitをインストールすればOKです。

```sh
# ダウンロードしたインストーラーを実行する。
$ sudo sh cuda_10.1.168_418.67_linux.run
```

ランレベルを変更している場合、元に戻します。

```sh
$ sudo systemctl set-default graphical.target
$ sudo systemctl get-default
graphical.target
```

再起動します。

```sh
$ sudo reboot
```

## MarkLogic10のインストール
MarkLogic10のインストーラーには通常版とGPU対応版があります。GPU対応版をダウンロードしてください。

インストールと起動は以下の通りです。

```
$ sudo yum localinstall -y [MarkLogic10のRPMファイル]
$ sudo systemctl enable MarkLogic
$ sudo systemctl start MarkLogic
```

nvidia-smiコマンドを実行し、GPUの状態を確認してみます。
MarkLogicのプロセスがGPUを使用していることが分かります。

```sh
$ nvida-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67       Driver Version: 418.67       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 107...  Off  | 00000000:0B:00.0 Off |                  N/A |
|  0%   45C    P8     7W / 180W |    163MiB /  8119MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0     13964      C   /opt/MarkLogic/bin/MarkLogic                 153MiB |
+-----------------------------------------------------------------------------+
```

# おしまい
XQueryやJavascriptを使用して、MarkLogic上の様々な非構造データに対する機械学習アプリケーションを開発できるようになりました。データベースと機械学習が直結することで、多くの活用方法が期待できます。