Pythonのライブラリ「Chainer」とその後発の「PyTorch」とは?活用方法を紹介

はじめに

2020年から始まったコロナ禍によって様々な企業がリモートワーク・テレワークを導入し始めたり、ペーパーレス化や電子印鑑サービスの開発が進んだり、ミーティングはオンラインが主体となったりと急速なデジタル化を余儀なくされ、思わぬ形でIT業界の転換期とも言える状況が訪れることとなりました。IT企業ならまだしも、これまでIT技術の導入が進んでいなかったその他業界においては思うように導入がうまくいかず、多かれ少なかれ業務に混乱が生じるようなこともあったのではないでしょうか。

さらに2023年に入ってコロナ禍も少しずつ落ち着きを見せると、今度はChatGPTをはじめとしたAI(人工知能)を使ったツールやサービスが大きな注目を浴びることとなり、当初の予測より早いシンギュラリティの訪れや、自分達の仕事がAIによって奪われてしまうのではないかという懸念・危惧がメディアでも連日取り上げられ、専門家によって一般人向けの解説が繰り返される状況も生まれました。そうとは言っても2023年の現時点でAIや機械学習、ディープラーニングといった分野はまだ発展段階であり、それらに対応できる人材も不足している状況です。これからさらに盛り上がりを見せる可能性の高い分野であるため、エンジニアやプログラマーの確保は流れに乗り遅れまいとする組織の急務となっているところも多いことでしょう。

この記事ではAIや機械学習、ディープラーニング(深層学習)といった分野で利用されることの多いプログラミング言語「Python」のライブラリ「Chainer」「PyTorch」について紹介します。Pythonは1991年にリリースされて以降、しばらくは主にWebシステムの開発現場で利用されていましたが、元来備わっている統計解析が得意という特徴を生かして次第にR言語やJulia、Go言語等と並んで前述した分野で利用される場面が目立つようになりました。なお、ChatGPTの開発言語はPythonなので、ChatGPTに尋ねるとOpenAI含めPythonプログラミング言語を使用して開発されているという回答をしてくれます。今回はまだPythonを利用したことのない方、ディープラーニングの分野に触れたことがない方に向けて、具体的にPythonはどんな特徴を持った言語であるか、ディープラーニングとは何かを紹介したうえで前述したライブラリについて紹介していきます。ぜひこれらの分野に興味を持っている方や、これから学習を進めようとしている方はご覧ください。

Pythonはどんな言語か

2023年時点で使用者が一定数いるものだけでも250種類以上あると言われているプログラミング言語の一つに「Python(パイソン)」があり、1991年にオランダで開発・リリースされました。JavaやJavaScriptといった現在人気の高い言語より前から存在し、すでに30年以上の歴史を持つ言語で、その後に開発された RubyやSwift、Scalaといった言語にも影響を与えています。近年は小学校の授業にプログラミングが導入されていますが、その際にPythonが学習素材となっていることがあります。またIPA(独立行政法人 情報処理推進機構)では、2019年秋期以降の情報処理技術者試験において使用頻度の減少しているCOBOLに関する出題を廃止し、その代わりとしてPythonを導入しました。このようにPythonは今後の需要を見越して人材の育成に注力されている状況です。

Pythonはシンプルな構文、少ない記述でプログラミングできるという点が大きな特徴となっており、初めてプログラミングを学ぶ人も理解しやすい言語です。初心者が理解しやすいというと複雑なシステムを構築できないように思われるかもしれませんが、Pythonは統計処理や数値計算が可能な機能を多く備えているためビッグデータ分析やAI、機械学習といった近年需要が高まっている分野の開発が可能となっており、実際に多くのプロジェクトで利用されています。

分析を得意とする言語として「R言語」もありますが、Pythonの場合は特に機械学習や今回取り上げるディープラーニングの分野に向いていて、R言語はデータを処理、数値の可視化をするデータサイエンスに向いているというようにそれぞれ異なる特徴を持っています。例えばスーパーやコンビニ等の仕入れシステムのように、蓄積されたデータを基に機械学習・ディープラーニングを行って売れ行きの予測をするシステムにおいてPythonが利用されることがあります。Pythonに比べるとR言語はやや仕組みが複雑で速度はPythonの方が早いという違いがあるため、シンプルかつスピーディーに開発を進めたいという場合はPythonがおすすめとなります。一方で長期的な研究や新技術が必要となる「R&D(Research and Development)」という分野のシステム開発を行う場合はR言語がおすすめです。

Pythonのもう一つの特徴としては、言語自体の歴史が長いこともあって今回取り上げるようなライブラリ・フレームワークが豊富に開発されているという点が挙げられます。なおライブラリやフレームワークがどういったものであるかは改めて解説します。これらを利用せずとも開発はできますが、あらかじめ用意されているものを利用することで自分でコーディングを行うプログラムが大幅に軽減されるため、全体として開発効率を上げることが可能となります。また対象の言語に関して熟知していなくても、高度で複雑なシステムを開発することが可能となります。機械学習、AI、ディープラーニングといった分野のシステムを開発するのにPythonが利用されるのはまさにこのことが一つの理由と言えます。ただしライブラリ・フレームワーク独自の仕様というものはあるので、Pythonの学習とは別に少なからずそれらの学習も必要となることを頭に入れておかなければなりません。

それではPythonが適したシステムをもう少し詳しく見ていきます。機械学習が可能なロボットの開発や、業務の自動化・効率化ツールの開発、Web上に存在する様々なデータを収集する「クローリング」やノイズと言われるような不要な情報を省いて利用したい情報のみ抽出する「スクレイピング」、ExcelにおけるVBA(マクロ)に代わる自動化プログラムの作成、Webアプリ・デスクトップアプリ・組み込み系アプリの開発、ブロックチェーン技術の開発と、非常に幅広い分野で利用されています。

エンターテイメント的な要素として注目されたもので2014年にソフトバンクが発表したヒューマノイドロボット「ペッパーくん(2020年に生産中止)」がありますが、こちらもPythonによって開発されています。顔認識や感情認識といった多彩なセンシング機能が搭載されており、相手の気持ちを汲み取ることができるロボットとして一世を風靡しました。またPythonは基本的にスマートフォン用アプリの開発には向いていないとされてきましたが、2011年にはAndroidやiOS向けのアプリ開発が可能な「kivy」というライブラリも登場したため、利用の幅をさらに広げている状況です。

以上の用途を見る中で予測の付く人もいるかもしれませんが、Pythonの知識・スキルを習得することでAIエンジニア・機械学習エンジニア、データサイエンティスト、Webエンジニアとして活躍できる可能性があると言えます。分析したデータを生かすWebディレクターやWebマーケター、SEOコンサルタント等のマーケティング関連の職種で活躍できる可能性もあります。

このPythonという言語の名称は本来英語で「ギリシア神話に登場する巨大な蛇の怪物」を意味しますが、直接の由来は1970年代にイギリスのBBCで放送していた人気のバラエティ番組「空飛ぶモンティ・パイソン」から採られたと言われています。Pythonのロゴは本来の意味に倣って2匹の蛇がプラスマークのようにくっついた形となっているので、気になる方はぜひ公式サイト等で確認してみてください。また、コンピュータの学習を目的に開発された小さなコンピュータとして「Raspberry Pi(日本でラズパイと略して呼ばれる)」が近年様々なコンピュータ雑誌でも取り上げられる程人気となっていますが、このラズパイはPythonとの相性が良く、名称についている「Pi」はPythonの「パイ」から採られているとも言われています。

Pythonはプログラミング初心者にも扱いやすい言語であることを述べましたが、その大きな理由の一つとなる独自の仕様「オフサイドルール」について簡単に解説します。このルールは便利な反面、守ってコーディングをしないと他の言語では意識しない部分でエラーを発生させてしまうことになるので、これからPythonを学習するのであれば早いうちに頭に入れて癖を付けておくことをおすすめします。

ルールとしては特に複雑なものではなく、インデント(字下げ)を正しく利用してコーディングするというものです。作文や論文を作成する時に一つの段落の始まりは頭1マスを空けて書き始めるように、それと同様のルールがオフサイドルールとなります。プログラムの場合は頭1マス空けてことをインデントと呼び、インデントを付けることで可読性を増すことができます。またPythonにおいては「{ }」等の記号の記述の省略が可能となります。ただし前述したようにルールとして定められているため、記号とインデントのどちらも使わずにコーディングをしてしまうとエラーとなるので注意が必要です。可読性は特に複数のエンジニアやプログラマーで共同開発する場合には重要となり、結果として開発の効率を挙げることにもなるのでぜひ初期の段階でマスターしておきましょう。

なお、Pythonを勉強するに当たって役立つオンライン学習サイトはたくさんありますが、今回はその中から3つに絞って紹介します。

一つ目は「Udemy(ユーデミー)」というサービスです。Udemyは65以上のプログラミング言語に対応していて、もちろんPythonも学べるようになっています。学習者のレベルに合わせたコースが豊富に用意されているので、自身の実力を確認しながら自分のペースで少しずつ進めることができます。基本的に有料ではあるものの、キャンペーンによる割引が受けられることもあるので気になる方はぜひ公式サイトで詳細を確認してみてください。

二つ目は「Progate(プロゲート)」です。Progateは初心者から始められるプログラミング学習サービスで、基礎的な内容の中には無料で受講可能なものもあります。上級の内容を学びたい場合は有料プランへ移行する必要があります。プログラミングするための環境構築や、図やイラストを使ったビジュアルで理解できるような構成になっている点も初心者が学びやすい理由の一つです。ただし、例えばPythonでのデータ分析やWebスクレイピングといったように、より実践的な内容を学ぶには物足りないため、それらを学びたい場合はまた別の学習サイトを利用することとなります。

三つ目は「ドットインストール」です。ドットインストールもProgateと同じで、一部は無料で学習できますが上級レベルの内容の学びたい場合は有料への切り替えが必要です。また無料プランでは機能面でも制限があり、有料プランにすると全部の機能が利用できるようになります。動画で学べるのが大きな特徴で、テキストやイラストだけでは理解しづらいという方にはおすすめです。

四つ目は「PyQ(パイキュー)」です。PyQという名称からも想像が付きますが、Pythonに特化した独学プラットフォームであり、初心者でも学びやすい構成となっています。読む・書く・動かすという3段階で知識が定着できるようになっており、2023年8月時点では「PyQ 7days Python チャレンジ」というお試しプランが7日間無料で利用できるようになっています。自動で継続はされないため、無料期間後も利用したい場合は有料で契約することとなります。なお現時点でスマートフォンやタブレットでの動作は保証されていない点にはご注意ください。

プログラミングを学ぶのは書籍やスクールに通うことでも可能ですが、どうしても書籍で勉強するのが苦手な方や、極力コストをかけないで習得したいという方には学習サイトがおすすめです。なおサイトによっては、全ての機能を利用する場合、あるいは全ての項目を学習する場合は有料となることもあるのでご注意ください。

ここまでPythonの言語自体の特徴について紹介してきましたが、章末としてPythonが利用されている具体的なサービスについて紹介します。なお、必ずしもPythonだけで構築されているわけではなく、システムの一部のみPythonが採用されているということも多いです。Webシステムに関してはPythonでの開発ができるものの、決して特化している言語というわけではないので、ディープラーニングの部分だけをPython、Webの部分を別の言語というように使い分けられる状況があるためです。

Pythonが利用されている有名なサービスとして真っ先に挙げられるのはWebアプリケーションの「Facebook」「Instagram」「YouTube」等です。特にInstagramにおいてはPythonのフレームワークである「Django」が利用されており、YouTubeではサーバーサイドの処理にPythonが利用されていますが、Googleは他にも様々なWebアプリケーションでもPythonを採用しています。多くはありませんが、GoogleやSpotify、DropboxのWebサイトにおいても活用事例はあります。

他にも、Amazonにおける商品の取引関連システム、機械学習システムといった部分や、Netflixにおけるプラットフォーム開発、セキュリティ、データ分析、条件に見合った動画の特定シーンを抽出する仕組みといった部分にもPythonや関連するライブラリ・フレームワーク等が利用されており、企業によってはそのことをホームページ等で大々的に公表しています。

ディープラーニングとは?

ディープラーニングは、人間の脳の仕組みである「ニューロン」をニューラルネットワークとしてモデル化し、人間のような思考回路や行動を実現させようとする仕組みです。多くの人は、特に自身の能力を意識することなく物心ついた時から色の違いや人物の違いを見分けたり、ある物と物の距離を把握したり、相手の放つ言葉の意味を理解して会話を続けたりといった様々なスキルが脳を介して可能となっていますが、それらをコンピュータで実現させようとするのがディープラーニングです。これまで世に出てきているサービスや製品だけを見るとまだまだ人間と同等の能力が十分に発揮できているとは言えませんが、それでもディープラーニングの仕組みはすでに多くのものに取り込まれています。身近なスマートフォンやパソコン、スマートスピーカー、カーナビ等の音声認識、自販機等での顔認証、会議の議事録システム、ショッピングサイト等がその代表例と言えます。

ディープラーニングは機械学習のカテゴリーに含まれる技術の一つです。機械学習を端的に定義すると「人間の指示を必要とせず自ら考えて答えを導き出す技術」のことです。この機械学習を含んでいる大カテゴリーがAI(人工知能)です。3つの関係性を改めてまとめると「AI(人工知能)>機械学習>ディープラーニング」となります。

AIは人間の心と同じ機能を持つかという点を基準に「弱いAI」「強いAI」の2つに分けることができます。「弱いAI」とは単なるツールとしてのAIのことを表し、膨大なデータを用いた過去の学習を基に答えを導き出すチャットボット等が該当します。一方の「強いAI」とは、いわばアンドロイド、ヒューマノイドロボットと呼ばれるようなSFに登場するロボットのことを表し、現時点では概念が存在しているだけで実現できている状態ではありません。よってこれまで世に出ているAIと、そこに含まれる機械学習やディープラーニングは「弱いAI」の一つと捉えることができます。

弱いと聞くとどうしてもAIとして頼りない、不十分という見方をされかねないですが、決して役に立たないわけではありません。機械学習やディープラーニングが十分ではない開発されたばかりのAIシステムというのは確かに全く役に立たず、検討外れの結果を導き出すことも少なくないです。かつて翻訳機能や音声認識機能を利用したことがある方は、その品質にはあまり期待できないという人もいることでしょう。ある意味でエンターテイメントやパフォーマンスの一つとして遊び程度で利用しているということも珍しくなく、中には進化を遂げずにサービスが終了してしまったものもあります。効率化を目的の一つとして開発されているにもかかわらず、AIを活用しようと試行錯誤することで却って業務効率を下げてしまったということもあります。しかし改良や学習を続けることで、しばらく経ってから改めて使ってみると思わぬ品質の向上が実現できていて驚くこともあります。 弱いAIも十分に有用ですが、人間と同じで成長・学習が欠かせないということを覚えておきましょう。

この成長に欠かせない機械学習ですが、一般的には大きく 「教師あり学習」「教師なし学習」「強化学習」という3つの学習方法に分けられます。一概にどれが劣っていて優れているということではなく、現時点ではそれぞれに備わった特徴を生かせる分野で全て利用され続けています。人間に十人十色の性格や癖、趣味の違い、科目や職業への向き・不向きがあるのと同じです。

それぞれの学習方法を簡単に解説します。「教師あり学習」は、あらかじめ与えられた過去の正解となるデータを基として分析を行い、答えを出すという方法です。金融業界、小売業といった幅広い分野のシステムにおける学習方法として採用されています。「教師なし学習」は、教師あり学習と異なって正解となるデータが与えられておらず、膨大なデータの中から自ら特徴や規則性を探し出すという方法です。クレジットカードの不正取引検知、システムの異常検知といったシステムで採用されている傾向にあります。教師あり学習、教師なし学習の2つは一度説明を聞いてしまえば名称の由来が理解しやすいことでしょう。もう一つの「強化学習」は、機会学習を行っていく過程で何が正解で何が不正解であるのかということを教えて、学習能力を高めていくという学習方法です。強化学習は、ゲーム開発や自動運転システム、エレベーターシステムといった分野で利用されています。

この項目の冒頭で述べた「ニューラルネットワーク」の多層化は、ディープラーニングの特徴そのものと言っていい程の重要な要素です。人間や動物の身体にはニューロンという神経細胞が備わっており、それによって情報処理や情報伝達を行います。この仕組みをコンピュータに応用し、かつ多層化すると、収集した過去の大量データから自発的に学習して、より精度の高いデータの分析が可能になると言われています。人間の赤ちゃんが、特に親が教えたわけでもないのに気付いたら自ら言葉を覚えたり、善悪の判断ができるようになったりということと似ています。

今回のようにAIやディープラーニングに関して取り上げられた情報を探していると目にする機会の多い「シンギュラリティ(技術的特異点)」についても簡単に解説しておきます。

シンギュラリティは都市伝説のように信憑性が低く大袈裟で過剰な内容として、まるでSFにおける用語の一つのように語られていることも多々ありますが、本質としてはAIが人間の知能・能力を超え、社会インフラやシステムの在り方においてこれまでの知識や経験では想像できないほど大きな変化・改革が起こる転換点のことを表します。シンギュラリティに関しては現時点で特に全世界共通の認識事項は存在せず自由に論じられていますが、AI研究における世界的な権威者が提唱したこともあり、広く普及した概念となりました。

その権威者からは、AIの機械学習が進むに連れて人間には到底達することのできない境地にたどり着き、最終的には人間の知能を上回ってAIに支配されてしまう日が来るのではという話が出ていることもあり、この点はフィクションの題材とされることもあって注目されることが多い傾向にあります。もちろん今回この点に関して詳しく論じることはしませんが、現時点では必要以上にAIによる支配を恐れることはないと見られます。しかしその一方で、ChatGPTの普及と共に世界中に広がった、AI化、導入による失業や生成データの著作権といった現実的な課題に関しては世界的に真剣な議論が進められると予測できます。AI、機械学習、ディープラーニングといった分野は、以上のような話が出るまでのレベルに急速に進化を遂げていますが、一方で必要な技術力を備えたエンジニアの数が慢性的に不足しているという課題もあります。不足しているということは需要が多くある状態なので、これらの分野に関連したエンジニアを目指している場合は多くのチャンスがある段階と言えます。

次に、具体的にディープラーニングがITシステムにおいてどのように活用されているかを紹介していきます。初期のディープラーニングは画像認識システムで利用されることがメインの仕組みであったため、画像認識のシステムでは多く採用されています。近年スーパー等に行くと無人レジが設置されていることも珍しくなくなりましたが、無人レジで商品判別をする仕組みに使われていることがあります。また、ゴミを分別するために種類を認識する仕組み、自動運転において車線のはみ出しや飛び出し、信号無視等の危険を検知する仕組み、生活インフラでの自動点検、医療現場における病気が発見できる機器等でも採用されています。ディープラーニングは画像だけではなく音声認識もできるので、自然言語処理も可能となっています。あまり聞き馴染みがない言葉かもしれませんが、自然言語処理は話し言葉や書き言葉を解析して適切に処理する技術です。人間の言葉には全く同じ音声であっても前後の文脈によって全く意味が異なることや、曖昧な表現が含まれていることが頻繁にあります。それらを対象にしてある程度意図した通りの解釈ができるように解析してくれるのが自然言語処理です。そのため、文章の添削や多言語の自動翻訳、書類の自動作成等も可能です。また、クレジットカードの不正取引の検知、手書き文章の文字起こし等も自然言語処理を利用することで可能となります。

さらにディープラーニングでは異常検知も可能です。膨大なデータを解析することで一定のパターンを導き出すことができるため、例えば工場における機器や荷物、食品の検品はもちろん、駅や空港における人間の不審な行動の検知、交通インフラの故障や劣化の検知といったこともできます。Webサイトやオンラインショッピングにおけるクリック数、金融・経済における株価、為替等の市場動向予測、小売業における店舗の売り上げ予測、コロナ、インフルエンザといった感染症の流行予測等にもディープラーニングが活用できます。今回だけでも様々な例を紹介しましたが、それでもほんの一例に過ぎず、他にも日常生活やビジネスの様々な場面で実はディープラーニングが使われていたということもあります。

ライブラリ「Chainer(チェイナー)」と「PyTorch(パイトーチ)」について

ライブラリとは、ある特定の機能を満たすあらかじめ用意されたプログラムの塊のことを指します。みなさんの生活に例えると家電や生活用品のようなものと思ってもらえるとわかりやすいかもしれません。洗濯という機能を満たす洗濯機、掃除する機能を満たす掃除機、座る機能を満たす椅子がそれぞれライブラリに該当します。そうなると「生活=開発するシステム」と例えることができます。ライブラリを利用することで効率的にスピードを上げて開発を進めることができるようになります。様々な家電や生活用品を利用することでより便利に生活できるようになるという状況です。

似たようなものに「フレームワーク」があり、こちらは一機能というよりは一つのテンプレート、モデルのことを指します。オブジェクト指向プログラミング言語で言うインターフェースの概念と似ていると思っていただいて良いでしょう。あるシステムを構築するために当てはめる枠組み、大枠という概念がそのままフレームワークという言葉に現れています。ただしこの2つは厳密に区別されることはなく、今回紹介するChainer、PyTorchにおいてもライブラリとする文献、フレームワークとする文献の両方が存在しますが、この記事ではライブラリで統一して紹介していきます。

Ruby等の一部例外はあるもののプログラミング言語やライブラリ、フレームワークの開発というと海外発であることがほとんどで、日本ではそれらを輸入して利用していますが、Chainerは2015年に日本の企業が開発しました。日本の企業であるだけではなく2014年設立という若いスタートアップ企業の「PFN(Preferred Networks)」が開発しており、現在ではChainerの持つ特徴をその他有名なライブラリが導入している状況もあります。日本で開発されたということは 日本語で作られたドキュメントが豊富なので、これだけでも日本人にとってはメリットとなります。

なお最初に言っておくと、Chainerはすでに2019年12月5日で開発(メジャーアップデート)を終了していることをPFNが発表しています。そのためv7が最後のバージョンとなり、以降最新バージョンはリリースされません。しかし開発こそ終了したもののChainer自体は引き続き利用でき、バグフィックスやメンテナンスは実施されます。よくOSそのものや特定のバージョンのサポートが終了した際に、セキュリティ面において対象となるOSやバージョンの利用を避けるべきということが警告されますが、現状Chainerはバグフィックス、メンテナンスが継続されると公表されているためすぐに使用を停止しなければいけないということはありません。またバージョンによる互換性を気にする必要がなくなります。現在のChainerの機能では物足りないという場合は移行を検討するくらいに考えておいて問題ないでしょう。

Chainerはオープンソースのライブラリで、Windows、macOS、LinuxといったOSで動作可能です。ディープラーニングのニューラルネットワークには種類がありますが、Chainerは、 畳み込みニューラルネットワーク、リカレントニューラルネットワーク、フィードフォワードニューラルネットワークの3つに対応しており、複雑なネットワークを構築はもちろん、シンプルなネットワークも構築できます。また基本的なライブラリに加えて拡張機能も豊富なので初心者から上級者まで利用可能です。依存関係が少ないのでインストールも難しくありません。また、日本で開発されているので日本語のチュートリアルも用意されている他、日本語に対応した公式のユーザーグループも存在しています。

Chainerの特徴はPythonとよく似ていて、「Function」と「Variable」の要素から構成される直感的なコーディングだけでAI等の開発ができるほど高機能であり、作成したモデルの編集も容易にできます。もう一つの大きな特徴はプログラムの方式にあります。ディープラーニングの方式には「Define by Run」「Define and Run」の2種類がありますがChainerはDefine by Runであり、その先駆けのライブラリとも言えます。Define by Runとは、計算の実行と同時にニューラルネットワークの構造を定義する方式であり動的であるため、データ構造に変更を加える等の再構築やデバッグが簡単にできます。対するDefine and Runではあらかじめ定義を行ったうえで実行します。プログラム言語がインタプリタ型(コンパイルと実行を同時に行う)とコンパイラ型(あらかじめコンパイルしてから実行を行う)の2種類に分けられるのに似ています。

Chainerを使って構築される代表的なものとしては、ニューラルネットワークの構築、音声や画像認識による音声合成ソフトや自動返答Botの開発、シンプルなネットワークの構築、高機能な学習モデルの構築が挙げられます。

Chainerの開発を終了したるPFNは、今後「PyTorch(Facebook開発)」のサポートとディープラーニング専用プロセッサである「MN-Core」のPyTorchへの適用に注力することを発表していますが、このPyTorchにはChainerが先駆けとなったDefine by Run方式が採用されています。また同社は他にもCuPy、Optunaといったオープンソースを開発していますが、これらは引き続き開発が続けられます。

PyTorchはTorch(トーチ)がベースとなっており、かつ数値計算を高速に行うことができる「Numpy(ナンパイ)」というライブラリの仕様に近いところがあるので、すでにTorchやNumpyを利用したことがある方は馴染み易いです。また2016年にリリースされてから継続してコミュニティが活発であるため、最新の情報や技術を入手し易い状況です。ただし情報は英語のものが多いという点はあらかじめ頭に入れておいてください。

近年はオンプレミスからクラウドコンピューティングでの運用にシステム移行されることが多くなっていますが、AWS(Amazon Web Services)やGCP(Google Cloud Platform)、Microsoft Azureといったサービスでも採用されている点は大きなメリットと言えるでしょう。さらにPyTorchは、PythonだけではなくC++での利用も可能なライブラリとなっています。

なおPyTorchはChainerと同様に、高速な画像処理に特化したプロセッサ「GPU(Graphics Processing Unit)」に対応しており、CUDA(クーダ)という汎用の並列計算が可能なソフトウェアの利用が可能となっています。主に分散トレーニングやスケーラブルなトレーニング、パフォーマンス最適化を目的として利用されます。

人気の「TensorFlow(テンソルフロー)」について

Googleが開発・利用していたものを汎用的に利用可能なオープンソースとして開発し直したライブラリで、機械学習モデルの開発、トレーニングに活用できます。名称にあるTensorはChainerやPyTorchでも登場する要素と同様で、多次元データの集合体を表します。

PythonだけではなくC、C++やJava、JavaScriptといった言語でも利用可能な他、Windows、MacOS、Linux系OSといった各種OSにも対応しており、モバイル・IoT向けのTensorFlow Lite(iOS、Androidに対応)も別に提供されています。なお、TensorFlowも提供元より日本語対応のチュートリアルが用意されています。

ディープラーニングによるパターン認識が適した分野であり、音声認識や自動翻訳、自動運転、防犯、医療画像分析、製造業でのエラー検知や品質検査といった場面で活用されることが多い状況です。現時点ではChainerやPyTorchよりも活用されている範囲が広く、その分だけコミュニティは活発であり情報も豊富です。ただしGPUが前提とされているライブラリであること、独特なソースコードを理解するまでに学習コストがかかるという点には注意が必要です。

まとめ

PythonがAI・機械学習、ディープランニングといった分野で欠かせないプログラミング言語であること、さらにChainerやPyTorch、TensorFlowといった便利なライブラリと合わせて利用するとエンジニアとしての経験が浅くても開発を効率的に進められるということがわかっていただけたことでしょう。

今回紹介したようにすでにChainerの開発自体は終了しているものの、日本発のライブラリのため日本語のドキュメントが充実しており、ライブラリのメンテナンス等は継続される状況です。そのため現時点では無理にPyTorchに移行する必要はないので、状況に応じて使い分けや移行をするのが良いでしょう。日本語、英語両方のチュートリアルも用意されていて開発終了後も更新されているため、この記事をきっかけにChainerを使ってみたいと思った方はぜひチュートリアルから始めてみてはいかがでしょうか。