MACHINE LEARNING/AI
機械学習/AI向けサービス
機械学習/AI向けの環境も、
「導入&構築&保守を
一括サポート!」
GPUを搭載したシステムを中心に、機械学習/AI向けにシステム構築作業、設置・調整作業から、お納めした後の運用支援や保守サポートまで、VTは一括したサービスをご提供いたします。
VTは、機械学習/AI向け環境として、
各種フレームワークを導入したシステムをご提案いたします。
弊社のシステムは、基本的にマルチユーザでの利用を想定し、システムの共通領域に必要な環境を導入しています。
また、お客様のご要望に合わせて、特定のディープラーニングフレームワークを導入したり、クラスタ環境を含めHPCアプリケーション環境との複合環境も構築いたします。
ご要望があれば、データマイニングや機械学習を用いた問題解決型のコンサルティングを専門とする会社様への橋渡しも致します。お気軽にご相談ください。
企画学習/AI・ディープラーニングの導入検討から運用まで
運用支援もお任せください。
機械学習/AI向けの環境特有の、日進月歩のフレームワークの更新や追加、CUDA環境の更新、GPUの交換や増強、データの増強、クラウドサービスの活用といったシステム的なご支援。この分野での課題解決を得意とする協力会社様と連携してのシステム活用コンサルティングなどなど、HPCコンシェルジュにお任せください。
ABOUT
機械学習/AIと
Deep Learningについて
1956年に「人工知能」(Artificial Intelligence : AI)という言葉が登場し、「人間が行っている知的作業を、コンピュータで模倣するソフトウェアやシステム」の研究が始まりました。
その中で、人間が経験やデータから学習するようにコンピュータに学習させ、未知のデータに対しても予測できるようにする「機械学習」のアプローチが出てきました。
機械学習の1つの手法である「Deep Learning」(深層学習)は、人間の神経細胞をモデルにした「ニューラルネットワーク」と、ニューロンのパラメータ(重みとバイアス)を「誤差逆伝播法」と呼ばれる方法で計算する手法です。
この計算には、大規模な行列演算が必要で、近年のGPGPU(General-purpose computing on graphics processing units : GPUによる汎用計算)の計算能力の飛躍的な向上とがぴったりとマッチした結果、ビックデータ解析のニーズも相まって、この手法が大きく注目されるようになりました(2005年以降の第3回目のAIブーム)。
Deep Learningは、ネットワークを設定するだけで、データの特徴を自律的に学習する手法です。
学習結果であるパラメータセットが何を意味するのか分からないというブラックボックスではありますが、自動運転や顔認証システム・画像診断など、実用上多くの分野で成果が上がっています。
ニューラルネットワーク
Deep Learningとは?
「隠れ層が多数存在する多層構造のニューラルネットワークを用いた機械学習」
SYSTEM FOR MACHINE LEARNING / AI
VTは、GPUを搭載したDeep Learningなどの
機械学習/AI向けシステムをご提案いたします。
使用目的に合わせた環境が必要な方へ
HPC用途では倍精度以上の浮動小数点演算がメインですが、Deep Learningではそれほどの精度は不要です。しかし、Materials Informatics(材料情報科学:MI)の分野では、材料科学にデータマイニングと機械学習/AIのアプローチを組み合わせて、新規材料や代替材料の探索などを従来の手法に比べて効率よく行うようなアプローチに、量子力学に基づいたいわゆる第一原理計算やシミュレーションによる材料機能の推定なども加味した手法が注目されています。HPCと機械学習/AIをハイブリッドしたような用途には、特にコンピュータ プラットフォームに多くの要素が求められます。
最適なGPGPU環境と、データ量などを加味したストレージ構成、膨大な計算量を高速にこなすメニーコア・広帯域メモリ・MPI(:Message Passing Interface)によるクラスタ環境などなど、ご予算と用途に合わせた、研究開発業務に活用できるシステムをご提案します。
Deep Learning Framework
ニューラルネットワークを定義(モデル)し、学習データを与えて実際にニューロンのパラメータセットを求める(学習)。このために作られた一群のソフトウェアは「ディープラーニングフレームワーク」(Deep learning Framework)と呼ばれます。学習過程のグラフ化や入力データの加工ツール、モデルと学習結果などを含めて配布されていることもあります。多くの研究グループから、特徴のある様々なフレームワークが提唱されています。Pythonで利用するものが多いですが、C/C++など他の言語から利用することも可能なフレームワーク、また、Deep learningに限定されない機械学習のフレームワークもあります。
VTは、ご希望のフレームワークや、Jupyterなどの統合開発環境、Dockerなどのコンテナの利用など、機械学習/AIやDeep Learningといった手法を活用するための、コンピュータ環境をご提供いたします。
主要なフレームワークなど
※主なサポート言語で分けていますが、他の言語でも使用できるフレームワークがあります。
.
● PyTorch |
---|
Pythonの機械学習ライブラリとして人気 |
Pythonで利用する機械学習ライブラリで、AI開発やIoT開発、Webサービス・アプリ開発などで活用できます。Deep Learningの研究分野での人気は圧倒的です。コミュニティも活発で参考文献や資料も豊富に提供されています。コンピュータ処理言語に近い比較的低レベルのAPIを持ちPythonで数値計算を行う拡張パッケージであるNumPyと似たインタフェースとなってます。そのため使い慣れた方は直感的に扱うことができ、柔軟性、使いやすさは高い評価を受けています。しかし、多少難易度が高い面も。NVIDIA GPUのCUDA環境をサポートしています。 [公式サイト] https://pytorch.org/ |
● TensorFlow |
---|
Google開発、機械学習のためのフレームワーク |
開発元のGoogle社自らが活用しているように、大規模で高性能なシステムを作り込むことも可能な、汎用性が高く幅広い使い方が可能なフレームワークです。
ライブラリや公開されている情報も豊富で、C/C++/Python/Java/Goなどの言語に対応しています。複数のGPU/CPUでの実行をサポートします。速度とメモリ効率の点で PyTorch 2.0 よりも優れているとされています。 [公式サイト] https://www.tensorflow.org/ |
● scikit-learn |
---|
多くのアルゴリズムを集約 |
機械学習の多くのアルゴリズムが実装されたフレームワーク/ライブラリです。統計学・パターン認識・データ解析に関する技法が豊富で、特に研究者の間では人気があります。教師あり学習と教師なし学習に対応しています。一方、強化学習・Deep Learning(深層学習 )・グラフィカルモデル(隠れマルコフモデル等)・シーケンス予測には対応しないとの開発方針を取っています。学習データが少ないDeep Learningに適さない場合、scikit-learnに実装された様々なアルゴリズムを使用したAI(人工知能)を作成することができます。 [公式サイト] https://scikit-learn.org/stable/ |
● Pandas |
---|
データ解析を支えるライブラリ |
Pythonでデータ操作と分析を行うためのライブラリPandasは、特に構造化データの操作に優れています。一列のデータ:シリーズ(Series) だけではなく、表のイメージ:データフレーム(DataFrame) として、CSV・Excel・RDB/SQL・JSONなど多くのファイル形式のデータの読み込み/書き出しが簡単にできます。また、解析対象データの前処理として欠損値の処理、重複データの削除、データのフィルタリング、置換などの操作が簡単に行えます。データの結合、連結、およびピボット操作もサポートしており、データの集約やグループ演算、データへの様々な統計処理や回帰分析などを行うことができます。
Pandasは、グラフ構造とデータフレームのデータを容易に結合することも可能な柔軟性を持ち、NetworkXと連携してグラフ理論に基づくデータ解析も可能です。
[公式サイト] https://pandas.pydata.org/ |
● RAPIDS |
---|
数日かかっていたプロセスを数分に短縮 |
NVIDIAが開発したオープンソースのPythonライブラリRAPIDSは、データサイエンスでよく使用されるPandas(データ解析)やscikit-learn(Sklearn:データ解析やDeep Learning以外の機械学習)ライブラリと互換性を持たせているので、これらのGPU版と言ってよいでしょう。NVIDIA社製GPU(CUDA環境)が必要です。
GPUの並列計算能力を活用して、データ処理、分析、および機械学習などを高速に処理可能です。特に大規模データを扱うプロジェクトにおいて、その効果は顕著です。
[公式サイト] https://rapids.ai/ |
● R (R 言語)/RStudio |
---|
統計解析・データ分析・グラフィック分野を得意とする プログラミング言語 |
R(R言語)はオープンソース・フリーソフトウェアで、統計計算とデータ解析のために設計されたプログラミング言語および環境です。グラフィカルな開発/実行環境としてRStudioがあります。
統計解析とデータサイエンスにおける強力なツールであり、多くのデータサイエンティストやアナリストにとって不可欠なツールとなっています。各種検定、線形回帰、ロジスティック回帰、時間シリーズ解析、クラスタリングなど多くの統計手法をサポートしており、ベイジアンモデリング、因子解析、多変量解析など様々な統計手法が多数利用可能です。高品質なグラフを簡単に作成できるパッケージ(ggplot2等)により、データの可視化も可能です。
統計解析を中心に、時系列分析・機械学習・バイオインフォマティクスなどの分野でも活用されています。
また、世界中の研究者らが作成したパッケージが毎日のように追加されており、誰でも利用できるため、様々な分野の最新の研究で用いられている統計解析手法も手軽に実行することができます。
[公式サイト] R https://www.r-project.org/ RStudio https://rstudio.com/ |
フレームワーク | カテゴリ | 開発言語 | 主な用途 |
---|---|---|---|
PyTorch | 汎用フレームワーク | Python | 学術研究、機械学習全般 |
TensorFlow | 汎用フレームワーク | Python、 C++ | 画像/音声/文字認識、機械学習全般 |
Scikit-larn | 機械学習 | Python | 機械学習(ディープラーニング) |
Keras | 汎用フレームワーク | Python | 機械学習、ディープラーニング |
Caffe | 画像/動画処理 | Python、 C++ | コンピュータビジョン、画像認識 |
Microsoft Cognitive Toolkit | 時系列/画像処理 | Python、 C++ | 画像/音声処理、異常検知 |
Apache MXNet | 汎用ディープラーニング | Python、 C++ | ディープラーニング、エッジ向け学習 |
Chainer | ディープラーニング | Python | ディープラーニング、自然言語処理 |
ENVIRONMENT FOR MACHINE LEARNING / AI 機械学習/AI向け環境のご提案
弊社では、Deep Learningのアプローチを支えるプラットフォームであるGPU搭載サーバやワークステーションに加え、お客様のご要望に沿ったソフトウェア環境を構築してきました。Deep Learningに取り組むお客様が増える中、変化し続けるご要望にお応えするため、イージーオーダーのオリジナルパッケージご提供に加え、ユーザ様の自由度と柔軟性を最優先に考えたツール構成でのご提供もいたします。お好みやご希望に合わせてお選びください。
自由に構築したいユーザ様向け
昨今のHPCやAIアプリケーションを使用するためには様々な言語処理系・ライブラリ・フレームワークなどのコンポーネントが必要ですが、これらの組み合わせは非常に多岐にわたります。
また、アプリケーションなどのバージョンによる差異が問題になる場合は複数バージョンのコンポーネントを併存させ、切り替えて使用することも一般的になってきました。
さらに、実行環境を自動で構築する仕組みも整備されてきています。
その流れに合わせ、HPCやAI向けのパッケージマネージャであるcondaやspack、パッケージとその依存環境をコンテナとして仮想化するApptainer(Singularity)を標準搭載することで、
ユーザ様が自由にアプリケーション実行環境を構築できる柔軟性を提供いたします。
機械学習/AI向けのコンポーネントをご希望に応じて導入いたします。
Apptainer(Singularity) | conda | spack | ||
---|---|---|---|---|
従来Singularityと呼ばれていたHPC向けのコンテナ仮想化ツール。当初オープンソースソフトウェアとして開発されていたSingularityはSylabs社に買収されてSingularity PRO(有償版)とSingularity CE(無償版)になったが、Sylabs社に買収される前のSingularityのソースコードから枝分かれした、Singularity CEとは別のオープンソースソフトウェアである。 HPC 向けコンテナ環境としてよく使われている Singularity プロジェクトの Linux Foundation への移管に伴って名称がApptainerと変更された。 Apptainerはプロセス空間やファイルシステムなどをホストから隔離するコンテナ仮想化ツールのため複数のコンテナに同じソフトの複数のバージョンをインストールして実行できる。ただし「アプリケーションインストールの自動化」と「アプリケーションの複数バージョンの併存・切り替え」が目的であればcondaやspackだけでも同等のことが簡単に実現可能。 [公式サイト] https://apptainer.org/ |
condaはオープンソースでクロスプラットフォーム、特定の言語に依存しないパッケージマネージャ。「特定の言語に依存しない」とは、例えばcondaの記述言語はPythonだがユーザはPythonを一切知らなくてもcondaを使用することができる、ということ(ただし「condaでインストールしたPythonのパッケージ」を使用するにはPythonの知識が必要)。condaはパッケージ管理ツールとして、いろいろなパッケージが登録されたcondaのリポジトリ(チャネルと呼ぶ)から、依存関係も含めてバイナリパッケージをインストール(場合によってはソースからのコンパイルをしての導入)を行ってくれる。 そのリポジトリの1つがAnacondaである。Anacondaには、Pythonと統計やデータ解析用のR言語による科学技術計算用の開発環境として、Jupyter Notebook・RStudioなどのパッケージや、NumPyなどの拡張モジュールなど、膨大な数が収められている。Anaconda社このリポジトリの利用を有償で提供している。 [公式サイト] conda https://docs.conda.io/en/latest/ Anaconada https://www.anaconda.com/ |
spackはどちらかといえばHPC向け(AI/DLやQCのパッケージもある)の、オープンソースでクロスプラットフォームで言語に依存しないパッケージマネージャ。パッケージマネージャ本体の開発はアメリカ合衆国のローレンスリバモア国立研究所が主体となり、パッケージの開発もコミュニティベースで行われている。パッケージのインストールの際にはビルド済みのバイナリパッケージではなくソースコードを取得して構築を行うことと、商用製品が存在しないことがcondaとの違い。 誰かが作成したバイナリパッケージをインストールするのではなく、ソースコードを取得して自分の計算機でコンパイルを行うため最適化が容易であるほか、構築時に柔軟なカスタマイズを行うことができる。 [公式サイト] https://spack.io/ ※ユーザのかわりに「ソースコードをダウンロードし、パッチを当ててコンパイル・インストール」をやってくれるだけなので大規模なソフトウェアのインストールには非常に時間がかかる。 |
VT-DLパッケージ
CUDA11/cuDNN/NCCL2などの基本環境に、主要なフレームワークを導入したUbuntuベースの弊社オリジナルのパッケージです。AnacondaによるPython3ベースに、TensorflowやKERASなどの標準的なフレームワークとNVIDIA-Docker(NVIDIA Container Toolkit)環境、Jupyter Notebookなどが導入されています。
ご要望のフレームワークやライブラリ・パッケージ等の追加導入にも対応した、イージーオーダーシステムのパッケージです。
「いろいろなフレームワークを試してみたが、そろそろ本気で取り組もう!」、「NVIDIAの最新GPUで、Deep Learning環境をパワーアップしよう」などなど、ぜひ「HPCコンシェルジュ」にご相談ください。
マルチユーザでのPythonの統合開発環境としては、Jupyter Lab/Hubをオプションで導入いたします。
仮想環境
ライブラリの依存関係を解決する手段として、ハイパーバイザやホスト型の仮想環境を利用することも可能です。
仮想マシンを作成し、UbuntuなどのOSも自由に選択して環境を構築できます。GPUの利用に関しても、お使い方に合わせてご提案可能です。
機械学習/AI向けとして本格的にご活用になる場合は、GPUの利用が必須ですから、現状ではハイパーバイザとしてVMware ESXiを使用し、仮想マシンにパススルーでGPUを割り振りって仮想マシンから占有利用する環境をお勧めいたします。
コンテナ環境
仮想環境よりオーバーヘッドの少ないシンプルなアプローチとして、DockerやSingularityのようなコンテナ環境が、機械学習/AI向けの環境としても有効です。特定のフレームワークを導入したイメージを用意し、アプリケーションを使用する感覚でフレームワークを利用することができます。ネット上で公開されている既存のDockerイメージを利用することも可能です。
ご利用方法により一長一短ですが、一般的にDockerはイメージの起動時にroot権限が必要ですが(ユーザが起動できるようにも設定可能)、Singularityは各ユーザがコンテナを立ち上げることがきます。またHPC用途を志向するSingularityはMPIを使って並列処理も可能です。
コンテナを使うことで、CentOS上にUbuntu環境のイメージを作成してご利用いただくことも可能です。
環境構築とイメージの作り方により、異なる複数のCUDAバージョンや、対応状況の異なるフレームワーク(イメージ)を動作させることも可能です。現状では、CUDA Toolkitという広く使われている開発環境の存在により、NVIDIA社製のGPUがデファクトスタンダードです。フレームワーク、アプリケーションの対応や、公開されているコンテナイメージもそれを前提としているものが大半です。
VTでは、機械学習/AI向けのコンテナ環境としては、NVIDIA製GPU+Dockerを推奨いたします。