Swift For TensorFlow がオープンソースで公開
2018年5月30日水曜日
この記事は Google の Swift for TensorFlow チームによる Medium の記事 "Introducing Swift For TensorFlow" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
3 月の TensorFlow Developer Summit では、Swift for TensorFlow プロジェクトの発表とデモが行われました。そして、Swift for TensorFlow がオープンソース プロジェクトとして GitHub で公開されます。
Swift for TensorFlow は、新たなプログラミング モデルを提供します。そこでは、あらゆるスタックのレベルにおけるユーザビリティの改善が重視されており、グラフのパフォーマンスと、Eager Execution の柔軟性や表現力の高さが共存しています。Swift for TensorFlow は、Swift で書かれた単なる TensorFlow API ラッパーではありません。Swift にコンパイラと言語拡張を追加することによって、機械学習のデベロッパーにファーストクラスのユーザー エクスペリエンスを提供するものです。
私たちは、今までとは違う新たな方法で TensorFlow を使うというアプローチをとっており、それによって、新しい設計を導入する機会と、既存の問題を解決する新たな方法が開かれています。プロジェクトはまだ開発の初期段階ですが、オープンソース化して、設計についての議論を公開メーリング リストで行うことが決まっています。そのため、プロジェクトに興味のある方は、誰でも参画できます。
私たちは、このアプローチの概要や動作の仕組みを詳しく解説したドキュメントを作成しました。プロジェクトの README から、すべてのドキュメントにアクセスできます。まずは、Swift for TensorFlow Design Overview(Swift for TensorFlow の設計概要)から読み始めることをお勧めします。プロジェクトの主要コンポーネントや、それらがどのように連携しているかが説明されています。
次は、プロジェクトの重要な箇所を解説したドキュメントをご覧ください。設計の基礎となっているのは、Graph Program Extraction(グラフ プログラム抽出)と呼んでいるアルゴリズムです。これにより、グラフのメリットをすべて維持しながら、Eager Execution スタイルのプログラミング モデルを記述できます。この設計には、高度な自動微分のサポートを Swift に直接組み込むことも含まれています。また、Python と Swift の統合も深く考慮されており、Swift コードから直接任意の Python API を使用できます。
最後になりますが、Graph Program Extraction というアプローチをとったことで、実装にいくつかの技術的制約が課されることになりました。Swift をホスト言語として選択することになったのは、そのためです。トレードオフや、その選択に至った決定プロセスについては、Why *Swift* for TensorFlow?(なぜ Swift for TensorFlow なのか)で詳しく説明しています。
Swift for TensorFlow を使ってディープ ラーニング モデルを書き直すにはまだ少し早すぎますが、ML や言語、コンパイラに興味がある方は、さまざまな方法でプロジェクトに参加して貢献することができます。すぐに試せる macOS と Linux 向けのビルド済みパッケージが公開されており、シンプルな MNIST モデルも付属しています。さらに、ソースからビルドするための手順も掲載されています。プロジェクトのこのフェーズでは、既知の問題が数多く存在します。問題が発生した場合は、メーリング リストでご連絡ください。
ユーザーの皆さんに愛される、美しい TensorFlow インターフェースを新たに構築できることは私たちの喜びです。ぜひ、プロジェクトに対する皆さんの意見をお聞かせください。
Reviewed by Takuo Suzuki - Developer Relations Team
3 月の TensorFlow Developer Summit では、Swift for TensorFlow プロジェクトの発表とデモが行われました。そして、Swift for TensorFlow がオープンソース プロジェクトとして GitHub で公開されます。
Swift for TensorFlow は、新たなプログラミング モデルを提供します。そこでは、あらゆるスタックのレベルにおけるユーザビリティの改善が重視されており、グラフのパフォーマンスと、Eager Execution の柔軟性や表現力の高さが共存しています。Swift for TensorFlow は、Swift で書かれた単なる TensorFlow API ラッパーではありません。Swift にコンパイラと言語拡張を追加することによって、機械学習のデベロッパーにファーストクラスのユーザー エクスペリエンスを提供するものです。
私たちは、今までとは違う新たな方法で TensorFlow を使うというアプローチをとっており、それによって、新しい設計を導入する機会と、既存の問題を解決する新たな方法が開かれています。プロジェクトはまだ開発の初期段階ですが、オープンソース化して、設計についての議論を公開メーリング リストで行うことが決まっています。そのため、プロジェクトに興味のある方は、誰でも参画できます。
設計ドキュメント
私たちは、このアプローチの概要や動作の仕組みを詳しく解説したドキュメントを作成しました。プロジェクトの README から、すべてのドキュメントにアクセスできます。まずは、Swift for TensorFlow Design Overview(Swift for TensorFlow の設計概要)から読み始めることをお勧めします。プロジェクトの主要コンポーネントや、それらがどのように連携しているかが説明されています。
次は、プロジェクトの重要な箇所を解説したドキュメントをご覧ください。設計の基礎となっているのは、Graph Program Extraction(グラフ プログラム抽出)と呼んでいるアルゴリズムです。これにより、グラフのメリットをすべて維持しながら、Eager Execution スタイルのプログラミング モデルを記述できます。この設計には、高度な自動微分のサポートを Swift に直接組み込むことも含まれています。また、Python と Swift の統合も深く考慮されており、Swift コードから直接任意の Python API を使用できます。
最後になりますが、Graph Program Extraction というアプローチをとったことで、実装にいくつかの技術的制約が課されることになりました。Swift をホスト言語として選択することになったのは、そのためです。トレードオフや、その選択に至った決定プロセスについては、Why *Swift* for TensorFlow?(なぜ Swift for TensorFlow なのか)で詳しく説明しています。
参加をお待ちしています
Swift for TensorFlow を使ってディープ ラーニング モデルを書き直すにはまだ少し早すぎますが、ML や言語、コンパイラに興味がある方は、さまざまな方法でプロジェクトに参加して貢献することができます。すぐに試せる macOS と Linux 向けのビルド済みパッケージが公開されており、シンプルな MNIST モデルも付属しています。さらに、ソースからビルドするための手順も掲載されています。プロジェクトのこのフェーズでは、既知の問題が数多く存在します。問題が発生した場合は、メーリング リストでご連絡ください。
ユーザーの皆さんに愛される、美しい TensorFlow インターフェースを新たに構築できることは私たちの喜びです。ぜひ、プロジェクトに対する皆さんの意見をお聞かせください。
Reviewed by Takuo Suzuki - Developer Relations Team