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

ブログ    
ブログ    

推薦する

2024年の最大の落とし穴は?ディープラーニングに基づくエンドツーエンドの自動運転の最新レビュー

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

エネルギー業界における AI 成長の 5 つの要因

エネルギー業界は、気候変動、需要の増大、送電網の安定性といった課題に直面しながら、化石燃料から再生可...

Nvidiaは写真編集ソフトウェアGANを

[[438694]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

あなたのプライベートな写真が「合法的に」閲覧される可能性があります。顔認識を使用するときは必ず服を着用してください。

本日7月3日、デジタルブロガーの@长安数码君がソーシャルプラットフォームでニュースを発表しました。顔...

最新の RLHF は言語モデルの「ナンセンス」を救います!微調整効果はChatGPTよりも優れている、と中国の共著者2人が発表

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

5分間の技術講演 | GPU仮想化に関する簡単な講演

パート01 背景1.1 GPU アプリケーションのシナリオGPU (グラフィックス プロセッシング ...

ハードコア情報 | 顔認識の原理とは?

[[408210]]今では「顔認証で出勤、顔認証で支払い、顔認証でドアを開ける」といったハイテクノ...

人工知能はそれほど信頼できるものではない。システムは「知らないことを知らない」し、アルゴリズムは安全ではない。

[[419993]]文/陳潔人工知能技術は、画像分析から自然言語理解、科学分野に至るまで、現在の科...

自動運転の 3 つの大きな問題点、つまり安全性に直接対処しますか?プレミアム?プライバシー漏洩?

2021年の上海モーターショーが終わったばかりですが、会場内外で自動運転が大きな注目を集めています...

...

...

テンセントが自動運転車市場に参入、百度セキュリティが共同で「OASESスマート端末セキュリティエコロジカルアライアンス」を設立

テンセントは自動運転システムを開発し、無人運転市場への参入も狙っている。百度セキュリティはファーウェ...

DIFFアルゴリズムがわからない場合は、私に連絡してください(画像付き)

序文インタビュアー: 「仮想 DOM と Diff アルゴリズムをご存知ですか? 説明してください。...

「中国版GPT-3」が登場。算術演算が可能で、紅楼夢を書き続けることができる。64枚のV100画像で3週間トレーニングされた。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...