PyTorch を軽量化します。このディープラーニング フレームワークは価値があります。 GitHub 6.6k スター

PyTorch を軽量化します。このディープラーニング フレームワークは価値があります。 GitHub 6.6k スター

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。

PyTorch は、そのシンプルさと使いやすさから、 AI 研究者の間で常に人気があります。

ただし、タスクが複雑になると、一連のエラーが発生する可能性があり、時間がかかります。

こうして、このような「フレンドリーな」PyTorch Lightning が誕生しました。

GitHub で直接 6.6k 個のスターを獲得しました。

まず、研究コードとエンジニアリングコードを分離し、PyTorch コードを構造化して、データ操作プロセスをより直感的に表示します。

こうすることで、理解しやすくなり、エラーも起こりにくくなります。元々長かったコードが突然軽量になり、AI 研究者にとって非常に使いやすくなります。

では早速、「PyTorch」の軽量バージョンを見てみましょう。

ライトニングについて

Lightning は、DL/ML コードを研究コード、エンジニアリング コード、非必須コードの 3 つのタイプに分類します。

Lightning では、コードごとに異なる処理方法があります。

ここでの研究コードは、GAN、VAE などの特定のシステムとそのトレーニング方法を参照します。このタイプのコードは、LightningModule によって直接抽象化されます。

MNIST 生成を例に挙げてみましょう。

  1. l1 = nn.Linear(...)
  2. l2 = nn.Linear(...)
  3. デコーダー = デコーダー()
  4. x1 = l1(x)
  5. x2 = l2(x2)
  6. 出力 = デコーダー(特徴, x)
  7. 損失 = perceptual_loss(x1, x2, x) + CE(出力, x)

エンジニアリング コードとは、早期停止、GPU による割り当て、16 ビット精度など、このシステムのトレーニングに関連するすべてのコードです。

これらのコードはほとんどのプロジェクトで同じであることがわかっているので、ここでは Trainer によって直接抽象化されます。

  1. モデル.cuda( 0 )
  2. x = x.cuda( 0 )
  3. 分散 = 分散並列(モデル)
  4. gpu_zeroの場合:
  5. ダウンロードデータ()
  6. dist.barrier()

残りは、研究プロジェクトには役立つものの、研究プロジェクトとは関係のない、おそらく勾配をチェックしたり、テンソルボードにログを記録したりする、必須ではないコードです。このコードはコールバックによって抽象化されます。

  1. # ログサンプル
  2. z = Q.rsample()
  3. 生成された = デコーダー(z)
  4. self.experiment.log( 'images' , 生成)

さらに、PyTorch コードを 1 行も変更せずに CPU、GPU、複数の GPU、または TPU でモデルをトレーニングできる、16 ビットの精度でトレーニングできる、Tensorboard を使用して 5 つの方法で記録できるなどの追加機能もあります。

これは明らかではないかもしれないので、PyTorch と PyTorch Lightning の違いを直感的に比較してみましょう。

PyTorch と PyTorch Lightning の比較

写真を見てください。

モデル、データ、損失関数、最適化という 4 つの主要部分から始めて、単純な MNIST 分類器を構築する例を見てみましょう。

モデル

最初のステップはモデルを構築することです。今回は、28×28 の画像を入力として受け取り、0~9 の数字の 10 カテゴリの確率分布に変換する 3 層の全接続ニューラル ネットワークを設計します。

コードは両方ともまったく同じです。つまり、PyTorchモデルをPyTorch Lightningに変換するには、nn.Moduleをpl.LightningModuleに置き換えるだけでよいのです。

おそらくこの時点では、まだ Lightning の魔法は見えていないでしょう。心配しないで、見続けましょう。

データ

次はデータ準備の部分です。Lightning がこの処理を実行する点を除けば、コードはまったく同じです。

PyTorchコードを4つの関数、prepare_data、train_dataloader、val_dataloader、test_dataloaderに整理します。

準備データ

この機能により、複数の GPU を使用するときに、複数のデータセットをダウンロードしたり、データに対して複数の操作を実行したりすることがなくなります。この方法により、すべてのコードで、重要なセクションが 1 つの GPU からのみ呼び出されることが保証されます。

これにより、PyTorch が常にデータを繰り返し処理するという問題が解決され、速度が向上します。

トレーニングデータローダー、val_dataloader、テストデータローダー

それぞれが対応するデータセグメンテーションを返す役割を担っているため、データがどのように操作されるかを明確に把握できます。これまでのチュートリアルでは、データがどのように操作されるかはほとんどわかりませんでした。

さらに、Lightning では、テストや検証に複数のデータローダーを使用できます。

最適化

次は最適化です。

違いは、Lightning が Configuration Optimizer の機能に編成されていることです。複数のオプティマイザーを使用する場合は、両方を返すことができます。

損失関数

n 項目の分類では、クロスエントロピー損失を計算します。両方のコードはまったく同じです。

さらに、より直感的な検証とトレーニングのループもあります。

PyTorch では、for ループを自分で構築する必要があることはわかっています。単純なプロジェクトでは問題ないかもしれませんが、より複雑で高度なプロジェクトに遭遇すると、失敗しやすくなります。

Lightning の抽象コードは、Lightning の強力なトレーナー チームによって管理されます。

PyTorch Lightning インストールチュートリアル

これを読んで、あなたもインストールして試してみませんか?

PyTorch Lightning はインストールが非常に簡単です。

コードは次のとおりです。

  1. conda をアクティブ化 my_env
  2. pip pytorch-lightning をインストールします

または、conda 環境がなくても pip を使用できます。

コードは次のとおりです。

  1. pip pytorch-lightning をインストールします

作者も大物

PyTorch Lightning の作者である William Falcon 氏は、現在ニューヨーク大学で人工知能の博士号を取得しており、Forbes の AI に関する寄稿ライターでもあります。

2018 年にコロンビア大学を卒業し、コンピューターサイエンスと統計学の学位を取得しました。学部在学中は数学も副専攻していました。

彼は現在、博士号取得のためにGoogle Deepmindから奨学金を受け取っており、昨年はFacebook AI Researchからインターンシップの招待も受けています。

さらに、彼は海軍士官であり、アメリカ海軍特殊部隊SEALsから訓練を受けていました。

[[333620]]

少し前にウォールストリートジャーナルが、呼吸器疾患と呼吸パターンの関係を研究しているこのチームについて言及しました。考えられる応用シナリオとしては、電話で COVID-19 の症状を診断することが挙げられます。現在、チームはまだデータ収集段階にあります。

確かに、優秀な人は何をするにも優秀です。はぁ……

どうですか、試してみませんか?下のリンクをクリックしてダウンロードしてご覧ください!

ポータルを使い始める

https://github.com/PyTorchLightning/pytorch-lightning

pytorch-lightning.readthedocs.io/en/latest/index.html を参照してください。

<<:  ファーウェイアセンドアカデミーテクノロジーオープンデーが成都で開催され、開発者とともにAIの新時代を創造

>>:  中国がAI技術をリードしているのは数学が優れているからでしょうか?米誌、中国と米国の数学教育の格差を指摘

ブログ    

推薦する

Baidu Brain EasyDL Retail Editionは、消費財メーカーのオフライン流通チャネルのデジタルアップグレードをサポートします。

消費財ブランドにとって、製品の売上を増やすことが仕事の中心となります。しかし、電子商取引が普及してい...

シンプルで効果的な新しい敵対的攻撃手法により、人気の Android アプリの DL モデルが破られることに成功

現在、多くのディープラーニング モデルがモバイル アプリに組み込まれています。デバイス上で機械学習を...

太陽光パネルを日中に検査するためのドローンベースのSWIRカメラ

短波赤外線ベースのエレクトロルミネッセンスイメージングは​​、太陽光発電パネルの欠陥検出に有望です。...

5歳の子供がAIを圧倒、「遊ぶ」だけで十分か?

この能力がアルゴリズムによって習得された後、AlphaGo は人間のチェスの名人を破り、OpenAI...

自動運転の知識 ポピュラーサイエンス 自動運転車の7つのコア技術

自動運転技術の本質は、機械の観点から人間のドライバーの行動をシミュレートすることです。その技術的フレ...

成功するビジネス インテリジェンス戦略を開発する方法

ビジネス インテリジェンス戦略の策定は、企業が検討する必要がある重要なステップであり、ビジネス イン...

人工知能に関する世界インターネット会議の8つの視点のレビュー

[[416318]]最近、世界インターネット会議およびインターネット開発フォーラム「人工知能:新たな...

...

Google、AIの地位強化のためデータサイエンスコミュニティKaggleの買収を発表

Google は本日、データサイエンスと機械学習のコンテストを主催するオンライン サービスである K...

中国科学技術大学が提案したCNNとTransformerのデュアルネットワークモデルの精度は84.1%にも達する

[[416636]] Transformer と CNN はどちらも独自の利点を持ち、視覚表現を処理...

...

ビル・ゲイツ:この伝染病は[諸刃の剣]であり、人工知能はエイズとCOVID-19を治すと期待されています!

序文:科学技術界の頂点に立つビル・ゲイツ氏は、2015年にTEDで「今後数十年のうちに、核戦争よりも...

テクノロジーの発展により、人工知能はどれほど恐ろしいものなのでしょうか?

有名な科学者ホーキング博士の存命中、人工知能の発展は阻止されました。ホーキング博士はかつて、人工知能...

MLP および Re-Parameter シリーズに関する人気の論文を含む、注目メカニズムの 17 個の PyTorch 実装

[[415286]]注意メカニズムは、最初はコンピューター ビジョンで使用され、その後 NLP の分...

Xunlei 創設者 Cheng Hao: 人工知能起業における 6 つの核心課題

[[205875]]まず第一に、今日ビジネスを始めようと決めたなら、インターネットよりも人工知能に重...