MXNet(エムエックスネット)とは、「効率」と「柔軟性」を両立したディープラーニングフレームワークです。AWSが公式サポートを表明したことで大きな注目を集めています。

オープンソースのAI・人工知能/MXNetとは

MXNet(エムエックスネット)とは、「効率」と「柔軟性」を両立したディープラーニングフレームワークです。AWSが公式サポートを表明したことで大きな注目を集めています。

MXNet(エムエックスネット)とは、「効率」と「柔軟性」を両立したディープラーニングフレームワークです。AWSが公式サポートを表明したことで大きな注目を集めています。

目次

「MXNet」基本情報
・概要
・主な特徴
・同様製品
・ライセンス情報
・ダウンロード

ざっくりわかる「MXNet」
第1回 MXNetとは(入門編)
  ・参考サイト(1) オフィシャルサイト「Flexible and Efficient Library for Deep Learning」
  ・参考サイト(2) AWSサイト
  ・参考サイト(3) MXNet入門
第2回 MXNetのチュートリアル
  ・オフィシャルサイト チュートリアル
  ・サクッと始めるMXNetチュートリアル
  ・MXNetチュートリアル「Symbol Tutorial」
  ・MXNetチュートリアル「NDArray」
  ・MXNetチュートリアル「Moduleによるトレーニングと推論」
第3回 MXNetのインストール
  ・オフィシャルサイト(英語版)
  ・Linux(Ubuntu)編
  ・Windows編
  ・Mac編
  ・クラウド(AWS)Docker編
第4回 MXNetの実装事例
  ・物体検出
  ・3次元画像変換
  ・画風変換
  ・畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)
  ・オンラインニュース記事の人気度分析
第5回 MXNetのPythonAPI
  ・1.Module API(モジュールAPI)
  ・2.Model API(モデルAPI)
  ・3.Symbolic API(シンボリックAPI)
  ・4.IO Data Loading API(IOデータ読み込みAPI)
  ・5.NDArray API
  ・6.KVStore API

TOPに戻る

「MXNet」基本情報

概要

基本説明

MXNetはフル機能のディープラーニングフレームワークです。「柔軟」「スケーラブル」「効率性」などを特徴とします。

最先端のディープラーニング技術「畳み込みニューラルネットワーク(CNN)」「長短期メモリネットワーク(LSTM)」などをサポートします。

クラウド環境からモバイルデバイスまでの幅広いデバイスに対応し、ディープニューラルネットワークの定義/トレーニング/展開が可能です。

経緯

MXNetは、当初、ワシントン大学とカーネギーメロン大学によって、「畳み込みニューラルネットワーク(CNN)」と「長短期メモリネットワーク(LSTM)」をサポートするために開発が始まりました。
・2016年11月、AWSがMXNetの公式サポートを表明
・2017年02月、MXNetが「Apache Incubator」に認定

主な特徴

豊富な深層学習モデルのサポート

MXNetは、以下のように広範なディープラーニングモデルをサポートしています。
・CNN(畳み込みニューラルネットワーク)
・LSTM(長短期メモリネットワーク)
・RCNN(物体検出アルゴリズム)
・Deep Q Network(強化学習手法「Q-learning」+ディープニューラルネット)

適応範囲は、「画像認識」「自然言語処理」「レコメンド生成」など幅広い用途で利用されています。

スケーラビリティ

MXNetは、コンピュータリソースを追加すればするだけ処理能力が向上する設計になっています。

「リソースを追加するだけ」で処理能力を高められる点に期待が集まっています。

高速性

バックエンドエンジンはC++で実装されており、「I/O」と「計算処理」の両方が並列処理されます。使用されているプログラミング言語にかかわらず最適なパフォーマンスを発揮できます。

多言語対応

MXNetは多くの言語をサポートしています。
Python
・C++
・R
Scala
・Java
・Julia
・Matlab
・JavaScript

柔軟なプログラミングモデル(命令的/宣言的プログラムの混合)

MXNetでは、どのように計算するかを指示する「命令的プログラム」と、どうなるべきかを定義する「宣言的プログラム」を併用できます。これは、主要ディープラーニングフレームワークの中ではMXNetだけが持っている特徴で、効率性と生産性を向上できます。

MXNetは「命令的プログラム」と「宣言的プログラム」の両方を自動的に並列処理します。

マルチプラットフォーム

MXNetは、さまざまなデバイス/プラットフォームに対応しています。スマートフォンに対しても対応できます。
・CPUベース
・GPUベース
・クラスタ環境
・サーバ環境
・デスクトップPC環境
・スマートフォン(Android、iOS)

対応OSは次の通りです。
・Ubuntu/Debian
・MacOS
・Windows

メモリ効率性

メモリ効率にも優れていて、1000層の深いネットワークでも、4GB程度のメモリしか消費しません。

リファレンスサンプルライブラリ

コード付きのサンプルチュートリアルが用意されています。

「画像分類」「言語モデリング」「ニューラルアート」「音声認識」などについて参照できます。

同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「TensorFlow」「​Chainer」「Caffe」「Theano」など。

ライセンス情報

MXNetのライセンスは「Apache License Version 2.0」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

ダウンロード

ダウンロードページ

TOPに戻る

ざっくりわかる「MXNet」

第1回 MXNetとは(入門編)

ディープラーニングライブラリ「MXNet」の概要を紹介するサイトを紹介します。

参考サイト(1) オフィシャルサイト「Flexible and Efficient Library for Deep Learning」

【ポイント】

MXNetのオフィシャルサイト(英語)です。

【テーマ】

・Get Started
・Tutorials
・How To API
・Architecture
・Community

【ページリンク】

→mxnet

参考サイト(2) AWSサイト

【ポイント】

AWSサイトで、MXNetについて分かりやすく解説されています。

【テーマ】

・Apache MXNet とは
・MXNet のメリット
・ネイティブの分散トレーニングをサポート
・柔軟なプログラミングモデル
・クラウドからクライアントに移植可能
・多言語に対応 | 新しい言語の学習は必要なし
・最適化されたパフォーマンス
・MXNet オープンソースコミュニティ
・広範なモデルをサポート
・リファレンスサンプルの広範なライブラリ
・一般公開された共同研究コミュニティ

【ページリンク】

→Amazon Web Services →製品とサービス →Apache MXNet とは

参考サイト(3) MXNet入門

【ポイント】

MXNetの概要/特徴などを含めて、チュートリアルや各環境での使い方など、MXNetの全体像が分かるように解説されています。

【テーマ】

・MXNet とは
・概要
・特徴
・スケーラビリティ
・豊富な対応言語
・軽量かつ高い可搬性
・命令的 / 宣言的プログラムの混合
・豊富な深層学習モデルのサポート
・使い方
・インストール
・チュートリアル
・Amazon での MXNet
・EC2 とは
・AMI とは
・Deep Learning AMI からのインスタンス起動
・Docker での学習・推論
・Docker を使う意義
・Docker 化するには
・Docker コンテナ内から GPU を使うには
・NVIDIA-docker
・Amazon ECS での分散実行
・Amazon ECS とは
・チュートリアル

【ページリンク】

→Qiita →MXNet 入門

TOPに戻る

第2回 MXNetのチュートリアル

数多く用意されているMXNetチュートリアルの使い方や解説について紹介します。

オフィシャルサイト チュートリアル

【ポイント】

特定種類のアプリケーション用モデルを作成するための手順について言語別に解説されています。

【解説テーマ】

・Python
・Basics
・IO
・Computer Vision
・Natural Language Processing
・Speech Recognition
・Generative Networks
・Unsupervised Machine Learning
・Visualization
・Embedded
・R
・Computer Vision
・Natural Language Processing
・Supervised Machne Learning
・Scala

【ページリンク】

→mxnet →Tutorials

サクッと始めるMXNetチュートリアル

【ポイント】

Dockerコンテナを使用してMXNetチュートリアルを実行する方法について解説されています。

【解説テーマ】

1. Docker コンテナの起動
2. コンテナ内で Jupyter を起動
3. ブラウザでアクセス
4. 目的の .ipynb を開く
4.1. MNIST の手書き推論
4.2. CNN によるテキスト分類

【ページリンク】

→Qiita →サクッと始める MXNet チュートリアル

MXNetチュートリアル「Symbol Tutorial」

【ポイント】

MXNetオフィシャルサイトの「Symbol Tutorial」を翻訳した上で、補足説明で解説されています。

【解説テーマ】

・Symbol 合成 (Composition)
・基本演算子
・基本ニューラルネットワーク
・深層ネットワークのためのモジューラ化された構築
・複数 Symbol のグループ化
・NDArray への関係
・NDArray の利点
・Symbol の利点
・Symbol 操作
・Shape 推論
・データでバインドして評価する
・load と save
・カスタマイズされた Symbol
・上級の使用法
・上級の使用法
・変数共有

【ページリンク】

→クラスキャット →GoogLeNet →MXNet チュートリアル : Symbol – GoogLeNet Inception

MXNetチュートリアル「NDArray」

【ポイント】

MXNetオフィシャルサイトの「NDArray Tutorial」を翻訳した上で、補足説明で解説されています。

【解説テーマ】

・基本
・配列作成
・配列をプリントする
・基本操作
・Indexing と Slicing
・Shape 操作
・Reduce
・Broadcast
・Copies
・上級
・GPU サポート
・(分散)ファイルシステムから/へ Serialize する
・遅延評価 (Lazy Evaluation) と自動並列化 (Auto Parallelization)
・Current Status
・Futher Readings

【ページリンク】

→クラスキャット →GoogLeNet →MXNet チュートリアル : NDArray

MXNetチューリアル「Moduleによるトレーニングと推論」

【ポイント】

MXNetオフィシャルサイトの「Training and Inference Module Tutorial」を翻訳した上で、補足説明で解説されています。

【解説テーマ】

・基本的な使い方
・準備
・Module を作成する
・トレーニング、予測、そして評価
・Save と Load
・計算 “機械" としての Module
・More on Modules

【ページリンク】

→クラスキャット →GoogLeNet →MXNet チュートリアル : トレーニングと推論 Module

TOPに戻る

第3回 MXNetのインストール

各環境にMXNetをインストールする方法を紹介します。

オフィシャルサイト(英語版)

【ポイント】

各環境へのインストール手順と、各種注意点などがまとめられています。「Raspberry Pi」へのインストール手順も解説されています。

【解説テーマ】

・Installing MXNet on OS X (Mac)
・Installing MXNet on Ubuntu
・Installing MXNet on Windows
・Installing MXNet on Amazon Linux
・Installing MXNet on CentOS
・MXNet with Docker
・Installing MXNet on the Cloud (AWS AMI)
・Installing MXNet on Raspberry Pi (Raspbian)

【ページリンク】

→mxnet →Overview

Linux(Ubuntu)編

【ポイント】

Deep3Dに対応させた「MXNet 0.7.0」を「Ubuntu 14.04」にインストールする手順がまとめられています。

【解説テーマ】

・MXNetのビルド
・Python用MXNetのセットアップ

【ページリンク】

→SoraLab →MXNet →Deep3Dに対応させたMXNet 0.7.0をインストールしてみた

Windows編

【ポイント】

Windows10にMXNetをインストールする手順です。

インストールから、モデル生成/学習/実行までがまとめられています。

【解説テーマ】

・インストール
・ソースコード
  ・モジュールのインポート
  ・学習データ
・ログ出力
・ネットワーク定義
  ・モデルの生成
  ・モデルの学習
  ・モデルを使った予測
  ・ソースコード全体
・実行結果

【ページリンク】

→Qiita →MXNetでXORを学習する

Mac編

【ポイント】

「MacOS Sierra」へのインストール手順メモです。

ポニーやゾウの画像認識結果もあります。

【解説テーマ】

・mac デフォルトのpythonだとうまくいかなかったので、brew でインストールする。
・opencv をインストール
・描画ツールが入ってないと怒られたのでインストール
・肝心のmxnet-ssdをclone
・configを変えないとコンパイルできなかったので、下記のように変更
・makeする
・デモを走らせる(cpuオプションをつけないとgpuで処理しようとしてエラーになる)

【ページリンク】

→Hatena::Diary →I* HACK! ウェブ関連のタレコミ →Mac OSにmxnet-ssdをインストールして、ディープラーニングに触ってみた

クラウド(AWS)Docker編

【ポイント】

AWSでECS(Amazon EC2 Container Service)を使用して、DockerコンテナでMXNetを立ち上げて処理をする内容です。

AWSのスクリーンショット付きで、分かりやすく手順が説明されています。

【解説テーマ】

・MXNetとは
・今回やること
・ECSクラスタの準備
・インスタンスの準備
  ・ベースイメージ起動
  ・nvidiaドライバのインストール
  ・nvidia-dockerのインストール
  ・AMI作成
  ・できあがったAMIからEC2を起動
・MXNetコンテナの作成と登録
  ・コンテナイメージ作成
  ・ECRにプッシュ
・コンテナデプロイとDeep learning実行
  ・ECSでコンテナデプロイ
  ・実行

【ページリンク】

→Qiita →MXNetをECSを用いてDockerコンテナとしてデプロイする

TOPに戻る

第4回 MXNetの実装事例

MXNetを利用した実装事例(物体検出、3次元画像変換、画風変換、CNNなど)について紹介します。

物体検出

【ポイント】

MXNet実装「mxnet-ssd」での物体検出モデル作成がまとめられています。

「mxnet-SSD(Single Shot MultiBox Object Detector)」とは、単一ネットワークでのオブジェクト検出フレームワークです。オブジェクト検出タスクのトレーニング/評価/テストを行えます。

トレーニング用データセットとして「PASCAL VOC2007」を利用しています。

【解説テーマ】

・物体検出
・物体検出モデルの作成

【ページリンク】

→SoraLab →MXNet →Single Shot MultiBox DetectorのMXNet実装で物体検出モデルを作成してみた

3次元画像変換

【ポイント】

MXNetのDeep3Dを利用して「2次元画像を3次元画像に変換する方法」についてまとめられています。

【解説テーマ】

・Deep3D
  ・必要条件
  ・準備
・2D・3D変換

【ページリンク】

→SoraLab →MXNet →MXNetのDeep3Dで画像の2D・3D変換を試してみた

画風変換

【ポイント】

MXNetを利用して「Neural Art」による画風変換を行なう例です。

「ポメラニアン」画像を「ゴッホのひまわり」風に変換しています。

【解説テーマ】

・MXNet
・Neural Artによる画風変換
・ポメラニアン × ゴッホの『ひまわり』

【ページリンク】

→SoraLab →MXNet →MXNetのNeural Artで画風を変換してみた

畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)

【ポイント】

MXNetのRパッケージでMNISTショートバージョンの分類タスクを試している例です。

【解説テーマ】

・Convolutional Neural Network (CNN)とは
・MXnetのRパッケージ{mxnet}で手持ちのMNISTショートバージョンの分類タスクを試してみる
・インストール
・データセットの準備
・Deep Neural Network (DNN)で試してみる
・Convolutional Neural Network (CNN)で試してみる
・他手法との比較
  ・ランダムフォレスト
  ・Xgboost
  ・DNN by {h2o}

【ページリンク】

→Hatena Blog →六本木で働くデータサイエンティストのブログ →Deep Learningライブラリ{mxnet}のR版でConvolutional Neural Networkをサクッと試してみた(追記3件あり)

オンラインニュース記事の人気度分析

【ポイント】

「あるサイトに掲載されたオンラインニュース記事が、それぞれどの程度シェアされたのか?」について、ディープラーニングで回帰処理を行っている例です。

【解説テーマ】

・下準備
・ベンチマーク(L1正則化回帰&ランダムフォレスト)
・MXnetでDNNを組んで回してみる
・MXnetで手動で試行錯誤する
・ベイズ最適化でチューニングを効率良く進める
・最後に

【ページリンク】

→Hatena Blog →六本木で働くデータサイエンティストのブログ →Deep Learningで遊ぶ(2): オンラインニュース人気度+ベイズ最適化によるパラメータチューニング

TOPに戻る

第5回 MXNetのPythonAPI

MXNetが用意している6つのPythonAPIの概要について紹介します。

MXNetのPythonAPI

MXNetはプログラミング言語「Python」をサポートしています。MXNet Pythonパッケージにより、複数GPUを使用してテンソル/行列計算を行なうための効率的なコードを記述できます。

主要な6つのPython APIは次の通りです。

NoAPI名機能
1Module APIニューラルネットワークをトレーニングするための柔軟な高水準インタフェース
2Model APIニューラルネットワークをトレーニングするための単純で高レベルなインタフェース
3Symbolic APINDArraysに対する操作を実行して、レイヤーからニューラルネットワークをアセンブル
4IO Data Loading API解析とデータ読み込みを実行
5NDArray APIベクトル/行列/テンソル演算を実行
6KVStore API「マルチGPU」および「マルチホスト分散トレーニング」を実行

それぞれの概要について紹介します。

【1.Module API(モジュールAPI)】

「Module API」は、MXNetのニューラルネットワークを使用して計算を実行するための中間レベル/高レベルのインタフェースを提供します。

モジュールは「トレーニング」「予測」「評価」などの機能を提供します。すべての予測結果を収集して返します。

【2.Model API(モデルAPI)】

「Model API」は、ニューラルネットワークを学習するための簡単な方法を提供します。

一般的なベストプラクティスを使用してニューラルネットワークトレーニングを行なうラッパーとして機能します。

「モデルトレーニング」「モデル保存」「定期チェックポイント」などの機能を提供します。

【3.Symbolic API(シンボリックAPI)】

「Symbolic API」は、計算グラフを構成する方法を設定します。ニューラルネットワークレイヤ操作レベルの設定が可能です。

「シンボル作成」「シンボル属性追加」「シリアライゼーション」などの機能を提供します。

【4.IO Data Loading API(IOデータ読み込みAPI)】

「IO Data Loading API」は、データ入力機能を提供します。

MXNetはイテレータを使用してニューラルネットワークにデータを提供します。イテレータは複数の前処理を行い、ニューラルネットワークのバッチを生成します。

【5.NDArray API】

「NDArray API」は、ベクトル/行列/テンソル演算実行機能です。

「NDArray作成」「NDArray操作(算術演算、スライス操作など)」の機能を提供します。

【6.KVStore API】

「KVStore API」は、複数デバイス(GPU)に対する基本的な操作を提供し、「マルチGPU」および「マルチホスト分散トレーニング」を実行します。

「プッシュ」「集計」「アップデータ」などの機能を提供します。

参考元サイト

・mxnet →MXNet - Python API

TOPに戻る

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

MXNet最新TOPICS

最新情報はありません。

MXNet最新CLOSEUPコラム

  • オープソース書籍(サイド)

OSS×Cloud ACCESS RANKING

  • OSSNEWSに広告を掲載しませんか?

facebook

twitter