Grand-challenge向けの環境準備 Part.1(ローカルPCでの必要なソフトのインストール・設定)

[Grand challenge](https://grand-challenge.org/)という医療系のAIコンテスト・プラットフォームに参加するにあたり、環境構築を実際にやってみた経験をメモに残します。
Grand challengeは、Kaggle や SIGNATE に比べて、必要な環境構築が複雑で参加のハードルが高いと感じました。環境構築の難しいポイントは、実行可能ファイルをDockerイメージで提出が求められる課題が多いことだと思います。Dockerやその背景知識となるLinuxのコマンドなどを理解して環境を準備する必要があります。
[Grand Challenge Documentation](https://grand-challenge.org/documentation/)に沿って準備を行いました。

# 1.この記事のゴール
1. Grand challengeに参加登録します。
2. Windows + Dockerで提出物（機械学習の推論プログラム）を作れるように環境を整えます。
    * 私のPCは数年前のWindows PCです。
        * CPU:Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz   2.40 GHz
        * RAM:8GB
        * Windows 10 Home 21H1
        * GPUなし

なお、機械学習の学習部のプログラムは、別途、Gooogle Colab でプログラミング・実行を行います。
            

# 2. Grand challengeへの登録
* [Grand Challenge Documentation -> Getting started](https://grand-challenge.org/documentation/getting-started/)に沿って行います。 
* (1)ユーザー登録と(2)アカウントのVerification の２段階の登録が必要です。
:::note info
ユーザー登録自体はメールアドレスがgmailなどのフリーメールでもできるが、アカウントのVerificationにはフリーメールではない、教育機関や勤務先のメルアドが必要になります。フリーメールしか持っていない場合の対応方法は思いついていません。
:::
:::note warn
アカウントのVerification のためには所属組織（大学名、企業名など）の情報を入力する必要があります。
* 所属組織名が未入力でも　Verification request を押せてしまいます。押してみたところ、数日後に「プロフィールを埋めないとVerificationできない」旨のメールが来ました。また、Verification status が "Your request for verification was rejected." となっていました。Verification を再要求するボタンは無かったので、来たメールに「Profileを入力したのでVerificationをしてほしい」旨を返信したところ、無事にVerificationされました。
:::

# 3. ローカルPCでの必要なソフトのインストール・設定

* [Grand Challenge Documentation -> Getting started -> Algorithms -> Create your own algorithm](https://grand-challenge.org/documentation/create-your-own-algorithm/)に沿って行っています。

:::note warn
よく似た情報ページとして、[Grand challenge -> Create an Algorithm container](https://grand-challenge.org/blogs/create-an-algorithm/)もありますが、こちらはリンク切れ等を起こしており、アップデートされていません。
:::

「Before you start」で列挙された必要なソフト等を準備していきます。これからインストールするソフトのイメージは以下のようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/44a519e1-5599-5da7-e6ac-90928e739271.png)

## 3.1 Docker
    
### 3.1.1 Docker (Docker desktop)をダウンロード・インストール

* [Grand Challenge Documentation -> Getting started -> Algorithms -> Create your own algorithm](https://grand-challenge.org/documentation/create-your-own-algorithm/)で、Before you start の節　箇条書き１つめの Docker をインストールします。

<details><summary>詳細</summary>


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/e9bf4f0e-42ea-2463-cba3-efa7da5500b0.png)
* ダウンロードしたexeファイルを実行します
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/554e0c6e-5d11-336a-7019-5fb386d66b8b.png)
* 再起動を求めらえるので再起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/a358e6bd-6794-bf9d-3d56-f291c72eeb83.png)
* 利用規約に同意します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/978d32dd-478d-93c6-db18-a8cde79e7da1.png)
* Dockerが起動しますがエラーが出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/166bfa4e-6d74-21cb-613f-39069743234a.png)
* エラーメッセージ内のURLをクリックすると以下のWebサイトに飛ぶのでダウンロード・インストール。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/ce1473b3-5458-b00c-30ae-e3a954a65a12.png)
* インストールアプリを起動してNext。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/e671ff2b-6b93-11e0-0e11-544f42d46330.png)
* Complite画面が出た後に、DockerのエラーメッセージからRestartを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/d685d6d2-7c3a-2ad2-00eb-b9e31e98243e.png)
* インストール完了

</details>

### 3.1.2 Dockerの使い方
* [初心者による初心者のためのDocker入門 その１ dockerコマンド編 -> 利用の流れ](https://qiita.com/k5n/items/2212b87feac5ebc33ecb#%E5%88%A9%E7%94%A8%E3%81%AE%E6%B5%81%E3%82%8C) を読んでざっくり使い方を理解しました。


## 3.2 evalutils
* [Grand Challenge Documentation -> Getting started -> Algorithms -> Create your own algorithm](https://grand-challenge.org/documentation/create-your-own-algorithm/) -> Before you start の節　箇条書き２つめ evalutils をインストールします。
    * evalutils は、Python のパッケージです。Python (Anaconda) がローカルPCにインストールされている必要があります。
* Windows の標準 PowerShell ではなく、Anaconda の　Anaconda PowerShell prompt を起動させ、以下のpipコマンドを行いました。
:::note warn
Anaconda で Python をインストールすると、Pythonに関するPATHがWindows の環境変数として設定されないため、Windows の標準 PowerShell では`pip`が動きません。代わりに、Anaconda のなかの Anaconda PowerShell prompt を使いました。
:::

```PowerShell:Anaconda PowerShell prompt
(base) PS C:\Users\(ユーザー名)> pip install evalutils
```


## 3.3 Git (Git-lfsを含む)
[Grand Challenge Documentation -> Getting started -> Algorithms -> Create your own algorithm](https://grand-challenge.org/documentation/create-your-own-algorithm/) -> Before you start の節　箇条書き３つめの git-lfsをインストールします。私は、Gitそのものが未インストールだったのでGitとgit-lfsをまとめてインストールしました。
* [WindowsにGitをインストールする手順(2022年2月更新)](https://www.curict.com/item/60/60bfe0e.html)を参考にしました。
    * Git for Windowsをインストールする過程でgit-lfsもインストールされました。

## 3.4 WSLをダウンロード・インストール

[Grand Challenge Documentation -> Getting started -> Algorithms -> Create your own algorithm](https://grand-challenge.org/documentation/create-your-own-algorithm/) -> Before you start の節　Windows tip の Windows Subsystem for Linux (WSL)  をインストールします。
WSLは、Windows Subsystem for Linux であり、Windows上でLinuxの環境を再現するモジュールです。
Powershell上に以下のコマンドを入れることでインストールできます。

```PowerShell:Anaconda PowerShell prompt
wsl --install
```
:::note
このコマンドは、Windows の標準 PowerShell でも、Anaconda PowerShell prompt でもどちらでも動くはずです。
:::

:::note
UbuntuのインストールとDockerの設定
4.3.3項まで行ってから、Ubuntu(Linux)がインストールされていないことが分かり、以下の通り対応しました。
* Microsoftの[WSL のインストール](https://docs.microsoft.com/ja-jp/windows/wsl/install)頁を読む限り、通常（規定）はUbuntuが同時にインストールされるようにみえるので、これは私特有の問題だったのかもしれません。

`wsl -l -v`コマンドでwsl上のディストリビューションを確認できます。Ubuntuがインストールされていないことを確認します。ここでUbuntuが確認できれば追加インストールは不要なはずです。
```PowerShell:PowerShell
PS C:\Users\(ユーザー名)> wsl -l -v
  NAME                   STATE           VERSION
 *docker-desktop         Running         2
  docker-desktop-data    Running         2
```

`wsl --install -d Ubuntu`でUbuntuをインストールします。
```PowerShell:PowerShell
PS C:\Users\(ユーザー名)> wsl --install -d Ubuntu
ダウンロード中: Ubuntu
インストール中: Ubuntu
Ubuntu はインストールされました。
Ubuntu を起動しています...
```

PowerShellのコマンドウィンドウとは別にUbuntuのウィンドウが開き、User名とpasswordの入力が求められます。

```Ubuntu:Ubuntu
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: 
```

インストールできたかを確認するとVersionが1となっていて、WSL2ではなくWSL1で動いていることがわかります。
```PowerShell:PowerShell
PS C:\Users\(ユーザー名)> wsl -l -v
  NAME                   STATE           VERSION
 *docker-desktop         Running         2
  docker-desktop-data    Running         2
  Ubuntu                 Installing      1
```

UbuntuをWSL2で動くように変換します。
```PowerShell:PowerShell
PS C:\Users\(ユーザー名)> wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
```
Ubuntuがデフォルトになるように設定します。
```PowerShell:PowerShell
PS C:\Users\(ユーザー名)> wsl --set-default Ubuntu
PS C:\Users\(ユーザー名)> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2
```

Docker Desktopを起動させて、設定画面から以下のようにUbuntuと連携させる設定をONにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549376/72bf9130-88a2-366e-2966-7c18d1e6e403.png)

:::

ここまでで必要なソフトのインストール・設定は一段落です。[次の記事](https://qiita.com/chihiro1209/items/5a46089d1217b2ef06ac)では、Grand Challengeへの提出物の例を作ってみます。