清華大学がJittorをオープンソース化:国内初の大学開発のディープラーニングフレームワーク、PyTorchへのワンクリック変換が可能

清華大学がJittorをオープンソース化:国内初の大学開発のディープラーニングフレームワーク、PyTorchへのワンクリック変換が可能

Theano、Caffeに続き、大学主導のディープラーニングフレームワークがオープンソース化され、国産化されました。

ディープラーニングのフレームワークはますます増えており、主導的なチームは大学の研究機関からテクノロジー大手へと徐々に移行しています。しかし、この分野における学問の力は無視できない。今日。清華大学は、Jittor と呼ばれるディープラーニング フレームワークを開発しました。このフレームワークは、ディープラーニング コミュニティに新しいソリューションを提供するとともに、ディープラーニング フレームワークのローカリゼーションを促進することが期待されています。

Jittor (Just in Time) は、メタ演算子を使用してニューラル ネットワークの計算ユニットを表現し、完全に動的コンパイル (Just-in-Time) に基づいたディープラーニング フレームワークであると報告されています。その主な機能は、メタ演算子と統合計算グラフです。

公式サイトによると、「研究チームは、ニューラルネットワークに必要な基本的な演算子をメタ演算子として定義しました。」メタ演算子は非常に低レベルであり、相互統合を通じて複雑なディープラーニング計算を完了できるため、使いやすいという特徴を反映しています。また、R&Dチームは、メタ演算子を使用するJittorはNumpyを上回り、より複雑で効率的な操作を実現できると述べました。

別のレベルでは、統合計算グラフは静的計算グラフと動的計算グラフの多くの利点を組み合わせ、使いやすくしながら高性能な最適化を実現します。メタ演算子に基づいて開発されたディープラーニングモデルは、リアルタイムで自動的に最適化され、CPU や GPU などの指定されたハードウェア上で実行できます。

Jittor は現在オープンソースであり、ユーザーは pip またはその他の方法を使用してダウンロードして使用できます。

Jittor公式サイト: https://cg.cs.tsinghua.edu.cn/jittor/

プロジェクトアドレス: https://github.com/Jittor/jittor

すぐに使えて、使いやすく、カスタマイズ可能:分離を実装して最適化するためのフレームワーク

公式サイトによると、Jittor は使いやすさ、柔軟性、即時性を念頭に置いて設計されています。

  • 使いやすくカスタマイズ可能: わずか数行のコードで新しい演算子とモデルを定義できます。
  • 実装と最適化の分離: 実装はバックエンドによって自動的に最適化されるため、フロントエンド インターフェイスを介した実装に集中できます。
  • すべてがジャストインタイム: Jittor 自体も含め、Jittor 内のすべてのコードはジャストインタイムでコンパイルされ、実行されます。ユーザーはいつでもすべての Jittor コードを変更し、動的に実行できます。

新しいディープラーニング フレームワークとして、Jittor には注目に値するいくつかの新機能があります。まず、Jittor はメタ演算子の概念を採用し、さまざまな基本計算をメタ演算子として定義し、異なるメタ演算子を組み合わせることでディープラーニングにおけるさまざまな演算子機能を実現します。

メタ演算子の融合。

第二に、演算子の設定において、チームはメタ演算子のバックプロパゲーションを閉じました。つまり、メタ演算子のバックプロパゲーションはメタ演算子でもあります。これにより開発の重複を回避できます。さらに、任意の高次導関数の計算もサポートされています。

高次導関数とバックプロパゲーション閉包。

次に、プログラミング言語に関して、Jittor は柔軟で使いやすい Python を使用します。ユーザーはこれを使用してメタ演算子計算用のPythonコードを記述し、Jittor

高いパフォーマンスを実現するために C++ に動的にコンパイルされます。

演算子の動的コンパイル。

さらに重要なのは、Jittor には最適化されたコンパイル パス機能が組み込まれており、LLVM と互換性があることです。最適化プロセスは実行中のハードウェアによって異なります。サポートされている最適化コンパイル パスは次のとおりです。

自動最適化。

メモリ管理に関しては、CPU メモリと GPU メモリが統一的に管理されます。 GPU メモリが不足すると GPU が呼び出されます。

統合メモリ管理。

インターフェースに関しては、Jittor は同期インターフェースと非同期インターフェースの両方を提供しており、切り替えによってパフォーマンスが低下することはありません。これにより、使いやすさと高い効率性が実現します。

効率的な同期および非同期インターフェース。

最後に、Jittor の開発を支援し、優れたフレームワークの機能を吸収するために、注目すべき点があります。 Jittor は PyTorch に似たモジュラー インターフェースを使用し、補助的な変換スクリプトと PyTorch と同じ Numpy+pickle プロトコルを備えているため、2 つのモデルを相互に読み込んで使用することができます。

モデルの移行。

非常に多くの機能があるため、モデルの作成は非常に良い経験になると思われます。さらに、Jittor は Python と C++ で記述されており、GPU と CUDA もサポートしています。

評価結果

当局は、Jittor のパフォーマンスに関する参考として評価結果も提供しています。現在、ResNet、VGG、SSD、DeepLab、LSGAN などの複数のネットワーク モデルが Jittor プラットフォームに実装されており、ユーザーが利用できます。同様のフレームワークと比較すると、Jittor は同じ収束精度を維持しながら推論速度の 10% ~ 50% のパフォーマンス向上を実現しました。

サンプルコード

Jittor のフロントエンド言語は Python です。フロントエンドは PyTorch や Keras と同様のモジュール設計を採用しており、バックエンドは CUDA や C++ などの高性能言語で記述されています。 Jittor の公式サイトでは現在サンプルコードが提供されており、分析することができます。

次のコードは、Python コードを使用して 2 層ニューラル ネットワークを最初から段階的にモデル化する方法を示しています。

  1. jittor を jt としてインポートします
  2.  
  3. jittorインポートモジュールから
  4.  
  5. jittor からのインポートnn
  6.  
  7. クラスモデル(モジュール):
  8.  
  9. __init__(self)を定義します。
  10.  
  11. レイヤー1 = nn.Linear( 1 , 10 )
  12.  
  13. 自己.relu = nn.Relu()
  14.  
  15. レイヤー2 = nn.Linear( 10 , 1 )
  16.  
  17. def 実行 (self,x) :
  18.  
  19. x = 自己.レイヤー1(x)
  20.  
  21. x = 自己.relu(x)
  22.  
  23. x = 自己.レイヤー2(x)
  24.  
  25. xを返す
  26.  
  27. def get_data(n): # トレーニングテスト用のランダムデータを生成します
  28.  
  29. iが範囲(n)内にある場合:
  30.  
  31. x = np.random.rand(バッチサイズ, 1 )
  32.  
  33. y = x*x
  34.  
  35. jt.float32(x)、jt.float32(y) を生成します。
  36.  
  37. モデル = モデル()
  38.  
  39. 学習率 = 0.1  
  40.  
  41. 最適化 = nn.SGD(モデルパラメータ(), 学習率)
  42.  
  43. enumerate(get_data(n)) 内の i,(x,y)について:
  44.  
  45. pred_y = モデル(x)
  46.  
  47. 損失 = ((予測y - y)** 2 )
  48.  
  49. 損失平均 = 損失平均()
  50.  
  51. 最適化ステップ (損失平均)
  52.  
  53. print(f "ステップ{i}、損失 = {loss_mean.data.sum()}" )

上記は、単純な完全接続ニューラル ネットワークを実装するためのコードです。ご覧のとおり、PyTorch と同様に、パッケージをインポートし、クラス継承を使用してモデルとデータ処理 (バッチ処理など) を定義し、トレーニング ループを設定するだけで済みます。使い始める際の難しさという点では、PyTorch に慣れているユーザーであれば、変数名の違いによる影響を受けることなく、すぐに使い始めることができます。

研究チーム

公式サイトによると、Jittorの開発チームは清華大学コンピュータサイエンス学部のグラフィックス研究室から来ており、研究室長は胡世民教授である。

[[319341]]

当研究室は1998年3月に設立され、2007年に清華大学ビジュアルメディア研究センターに発展し、2010年に北京市エンジニアリング技術研究センターとして認可されました。同年、テンセントと協力して清華-テンセントインターネットイノベーション技術共同研究室を設立しました。2018年には北京国家情報科学技術研究センター傘下のビジュアルメディアインテリジェントコンピューティングチームを設立しました。現在、教授2名、准教授3名、研究助手1名、ポスドク4名、大学院生50名以上が在籍しています。

JittorプロジェクトのメインR&Dチームは、博士課程の学生であるLiang Dun、Yang Guoye、Yang Guowei、Zhou Wenyangで構成されています。また、このプロジェクトは清華大学とテンセントの共同研究室からも資金と支援を受けています。

<<:  AI を医療業界のあらゆる側面に深く統合するにはどうすればよいでしょうか?

>>:  人工知能と機械学習でよく使われるアルゴリズムの概要と、よく使われる各アルゴリズムの精度の比較

ブログ    
ブログ    

推薦する

データによると、ChatGPTのトラフィックは8月末から増加し始めており、これは主に新学期の始まりによるものである。

9月21日、第三者機関の最新の推計によると、人工知能チャットボット「ChatGPT」のトラフィック...

2024年の産業用ロボットの開発動向

産業用ロボットは、さまざまな産業用タスクを自動的に実行できる一種の機器として、製造、組み立て、梱包、...

プログラマーを夢中にさせるソートアルゴリズムに関するビデオ

ルーマニア人はダンスが大好きな国民です。古いルーマニア映画「チプリアン・ボロンベスク」をご覧になった...

日本のCGマスターがまた登場!リアルタイムの顔キャプチャのための 3D モデリング ソフトウェア

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

...

人工ニューラルネットワークとBPアルゴリズムについての簡単な説明

[[338555]] 【51CTO.comオリジナル記事】 1 はじめに現在、機械学習技術とも呼ばれ...

Spark を使用して行列分解推奨アルゴリズムを学習する

[[182792]]協調フィルタリング推奨アルゴリズムにおける行列分解の応用では、推奨アルゴリズムに...

人工知能技術には明るい未来がある

1990年代初頭、中国の著名な学者である周海中氏は、人工知能技術がさまざまな分野で広く使用され、予想...

AIが旅行業界に浸透し、ロボットが次の休暇を計画するようになる

編集者注: ビジネス旅行者にとって、ついに朗報が届きました。人工知能がついに旅行業界に浸透し、パーソ...

機械学習クラウド プラットフォームにはどのような機能が必要ですか?

[[344159]]効果的なディープラーニング モデルを作成するには、モデルを効果的にトレーニング...

空飛ぶ脳?ヒントン氏のツイートは白熱した議論を引き起こした。ニューラルネットワークは鳥が飛ぶための「羽」なのか?

[[407838]]ヒントン氏はツイッターでちょっとした議論を始めた。「ニューラルネットワークを設...

...

近年、軍事用人工知能スタートアップが人気を集めている理由

ロシアとウクライナの紛争が始まって2週間、データ分析会社パランティアのCEO、アレクサンダー・カープ...