AI の専門家に転身した男性の感動的なストーリー。素人から Alibaba Cloud で最優秀賞を獲得するまで、彼が経験した落とし穴は 100 日間で学ぶには十分です。

AI の専門家に転身した男性の感動的なストーリー。素人から Alibaba Cloud で最優秀賞を獲得するまで、彼が経験した落とし穴は 100 日間で学ぶには十分です。

[[210088]]

ディープラーニングは研究室から技術の最前線へと移行しつつあります。 「年収100万」という人材需要の背景には、さまざまな採用チームが人材を見つけられないというジレンマがある。また、AIに興味を持つ人材の大多数がディープラーニングをすぐに習得できていないことも示している。おそらくその原因は、ディープラーニングの実用性があまりにも進んでいることにある。ディープラーニングを生み出した専門家たちは、後継者を育てる暇もなく、すでに技術の最前線に躍り出ている。最前線で働く技術人材は、学習の過程で再び罠に陥ることが多いのだ。

このリンクの繰り返しにどのように対処するかが、現在の AI 人材育成問題における重要な課題です。 『プログラマー』誌11月号の「AIエンジニアキャリアガイド」では、AI技術の最前線で活躍する各分野の専門家を特別に招き、これに関心のある技術系人材に成功体験や学習法を詳しく丁寧に共有し、誰もが計画を立てる際に、より合理的な学習パスを利用できるようにしたいと考えています。

その中で、智良先生の「実践の道:プログラマーのための高度な機械学習手法」という記事は、専門分野出身ではないプログラマーがどのようにして一歩一歩ディープラーニングの道を歩み始め、アリババクラウドカンファレンスでAPIソリューション部門の最優秀賞を受賞した植物識別アプリを開発したのか、自身の苦い変革体験に基づいて皆に伝えています。

このプロセスでは、入門コースをどのように選択しますか?ディープラーニングフレームワークとプログラミング言語をどのように選択しますか?データをどのように開始しますか?ディープラーニングを実行できるコンピューターを構成し、最初のモデルを実行するにはどうすればよいですか?以下は、Zhiliangの主なテキスト共有です。彼が遭遇したすべての落とし穴がはっきりとわかります。彼の肩を借りて、勇敢に前進できることを願っています。

コンピュータ業界では、実務者の質に関して常に単純な理解がありました。専門的な経歴を持つ人は持たない人よりも優れており、高い学位を持つ人は低い学位を持つ人よりも優れているということです。ほとんどの場合、この見解は正しいです。学校で勉強しているとき、指導してくれる先生、話し合うクラスメート、直面する試験のプレッシャー、練習するプロジェクトなどが存在します。たとえ学生があまり注意力がなかったとしても、数年間経験を積めば、卒業後にセミプロになることは問題ないでしょう。

しかし、量子物理学によれば、この世界の本質は確率に依存します。したがって、専門学校を卒業した学生は、そうでない学生よりもテクノロジーに優れている可能性が高くなります。逆に、機械学習やコンピューターサイエンスを専攻していない学生が、この分野を専攻している学生よりもこの分野で優れた成績を収める可能性は低いです。しかし、低確率の出来事は「あり得ない出来事」ではありません。国内の機械学習企業のCTOの多くは機械学習の訓練を受けていませんが、彼らはここで「低確率」を掴むことができ、華々しく逆転して他を追い抜くことができます。

彼らはどうやってそれを行うのでしょうか?

学生時代に機械学習の分野にチャンスを感じられず、他の分野を学び、働くことを選んだ場合、そして今、機械学習に転職する予定の場合、これらの人々と同じくらい優秀になるためには、何をすべきでしょうか。あるいは、少なくとも十分に優秀になるには、どうすればよいのでしょうか。

皆さんの参考のために、私自身の辛い変身体験をシェアします。

私は専門家ではありませんが、仕事柄、コンピューター ビジョンの従来のアルゴリズムに常に触れる必要がありました。その後、ImageNetのコンペの結果を見て、視覚分野でのディープラーニングのメリットの大きさに気づき、ディープラーニングやニューラルネットワークへの転身を決意し、後戻りできない学びの道を歩み始めたんです(笑)。

学生時代とは移行の仕方が違います。なぜなら、私がやっている仕事は、時間がないときに時間を捻出する必要があるからです。他の人が寝ている時間やゲームをしている時間を使って勉強する必要があり、私が学ぶ内容は非常に難しくてわかりにくいものです。

変革は実はとても簡単です。必要なのは学ぶことだけです。

変革は実際には非常に困難です。なぜなら、学習を続けるという一つのことを行わなければならないからです。

最も難しいのは、決心することではなく、それをやり遂げることです。始める前に、自分自身に次の質問をしてください。

  • 「この業界に入りたいかどうか、本当によく考えただろうか?」
  • 「他の人よりも一生懸命努力して、この道を進み続けることができるだろうか?」
  • 「すべての苦痛と挫折を乗り越えても、機械学習への情熱は私を突き動かし続けるだろうか?」

私が持っているデータによると、100 人のプログラマーのうち約 30 人が変革を検討しましたが、実際に行動を起こすのは 10 人だけです。 1 か月後、まだ継続している人は 5 人だけで、学習の最初の段階を完了できたのはせいぜい 2 ~ 3 人でした。

本当にそんなに難しいんですか?はい。特に、日中は仕事をしていて夜しか勉強できない場合は、友達もいない状態で一人で勉強し、問題を自分で調べることしかできません。体系的に始めるには、1 日か 2 日で習得できるものではありません。要点をつかむには数か月間継続する必要があると思います。

私の個人的な経験はこうです。始めたばかりの頃は、月曜、水曜、金曜の毎晩 2 時間、勉強したり、ビデオを見たり、本を読んだりしていました。土曜と日曜は、コースに付属していたプログラミングの宿題をこなすのに使っていました。これも 1 日約 2 時間でした。この熱意を3か月間継続した後、ようやく始めるための最初のステップを完了しました。

おそらく、より効率的な人もいれば、より遅い人もいるでしょう。しかし、速いか遅いかは重要ではありません。最も遅い学習者であっても、最初に学習を諦める人よりは進歩します。

ですから、本当に大切なのは「何を学ぶべきか」や「どのように学ぶべきか」ではなく、「本当に十分な決意があるかどうか」と「それをやり遂げられるかどうか」なのです。

入門コース

決心したら、次の点を検討してみましょう。機械学習を学ぶときに何を学ぶのでしょうか?

人工知能の概念はほぼすべての人が知っています。「機械学習」の概念を知っている人もいます。そのうちの少数の人は、「ディープラーニング」、「機械学習」、および「ニューラルネットワーク」の関係を明確に説明できます。ごく少数の人は、「畳み込み」、「プーリング」、「CTC」などの用語の正しい意味と計算/実装方法を正しく説明できます。損失関数とバックプロパゲーションの数学的表現を明確に理解できる人はほとんどいません。ネットワークへの変更(畳み込みカーネルの削減など)が精度/再現率に与える影響を説明できる人はほとんどいません。上記の影響の原理を説明できる人はほとんどいません。

これは、「プログラマー」グループにおける機械学習の現在の理解レベルです。

私の個人的な経験は、「​​ごく少数の人々」以外の「大多数の人々」に当てはまります。つまり、彼らはせいぜいディープラーニングが何を意味するのか、ニューラルネットワークの概念が何であるかを知っているだけで、実際にこの分野を体系的に研究したり、触れたりしたことはありません。

私たちの目標は、損失関数やバックプロパゲーションなどのより基本的で低レベルの知識を理解できる「ごく少数の人々」になり、新しいアルゴリズムやネットワークを設計したり、少なくとも専門家が思い描いたアルゴリズムやニューラルネットワークを実装するのを支援したりすることです。

この小さな目標を達成するには、最も基本的な知識を習得する必要があります。これは、水平、垂直、左下がり、右下がり、折り返しのストロークを練習せずに漢字の書き方を学ぶことは非現実的であるのと同じです。

しかし、「真実を知らない一般大衆」として、私たちはどこから始めればよいのでしょうか? 線形代数? 確率論? これらは最悪の選択です! 始める前から完全に自信を失わせるだけです。また、長くて急な学習曲線により、これは不親切な分野であると誤解することになります。実際には、「畳み込み」、「プーリング」、「CTC」などの用語の正しい意味と計算/実装方法を正しく説明できる「数少ない人」の一人になって初めて、それらを本当に見直す必要があります。

その前に必要な数学の知識は次の 3 点だけです。

1.行列演算の基本的な計算方法を理解し、[3×4]×[4×3]行列を手動で計算でき、[3×3]行列が得られる理由を理解できる。

2. 微分の基本的な意味を理解し、微分を使用して勾配を計算し、反復最適化を実装できる理由を理解します。

3. 基本的な事前確率と事後確率を計算できる。

大学の試験で答えを書き写すことに完全に頼らない限り、半日は使わないかもしれない本をめくるだけで、このちょっとした知識を取り出すことができます。

それで、始めることができます。基礎知識がまったくないすべての学生には、Andrew Ng の機械学習コースから始めることをお勧めします: 機械学習 - スタンフォード大学 | Coursera

Andrew Ng 教授の英語はゆっくりで明瞭、コースの字幕の翻訳もきちんと整っており、コースの設定と授業中のテストはタイムリーで合理的、要点は明確、宿題も便利です。また、Andrew Ng 教授の奥深くてわかりやすい説明、説明中に時々励ましたりからかったりすることで、機械学習の学習にもっと積極的に参加できるようになり、機械学習に必要な基礎知識をしっかりと素早く習得できます。

このオンライン コースは、スタンフォード大学の CS229 の簡易版に相当します。機械学習の最も基本的な知識、概念、実装、および最も一般的に使用されるアルゴリズム (PCA、SVM など) とモデル (完全接続ニューラル ネットワーク) をカバーします。このコースを学習する際には、基本的な概念と実装を理解することが重要です。プログラミングの基礎知識を持つ開発者として、この段階では、理論と実践を組み合わせる利点を最大限に活用し、提供されているプログラミング課題を最大限に活用し、可能な限り練習し、理論とコードの両方の観点からコースの知識ポイントを理解する必要があります。

学習を完了すると、機械学習の基本的な用語と概念を理解し、特定のアルゴリズムレベルのコーディング能力を身に付けることができます。理論と実践の確固たる基盤があれば、次の学習段階に進むことができます。次の学習段階には、基礎の強化と分野の選択という 2 つの主要な方向性があります。

しっかりとした基礎とは、このコースを修了したからといって機械学習を学んだことにはなりません。素人から一歩前進し、一歩を踏み出したというだけのことですが、実際には基本的な理解にすぎません。この時点では、素晴らしいアイデアがたくさんあると感じるかもしれませんが、これらのアイデアの価値や正しさの可能性を評価することは困難です。これは、基礎が十分ではないためです。

したがって、ディープ ニューラル ネットワークの学習を続ける前に、これまで学習した内容を組み合わせて、CS229 をもう一度読み、従来のアルゴリズム全体に慣れ、基本的な概念をすべて可能な限り習得することをお勧めします。

分野の選択は、タスクの目的の違いによります。ディープラーニングの分野は、コンピュータービジョン (CV)、自然言語処理 (NLP)、および音声やより特殊な強化学習などのその他のサブフィールドに大まかに分けられています。それぞれの分野には、研究に力を注ぎ、論文や成果を発表している研究者が多数います。個人のエネルギーの限界を考慮すると、1つまたは2つの方向を主な焦点として選択し、学術界の主流の進歩に遅れないようにすることをお勧めします。他のサブフィールドについて基本的な理解を持ち、必要に応じて参照するだけで十分です。

該当分野の研究を完了したら、次のステップは最新の古典論文を読んで再現してみることです。

プログラミング言語とディープラーニングフレームワークの選択

もちろん、開発者としてモデルを実装する場合、避けられない問題は次のとおりです。

どの言語を選択すればよいでしょうか? どのフレームワークを選択すればよいでしょうか?

開発者にとって、言語の選択は実際には問題ではありません。しかし、入門として最も推奨されるのは Python です。その理由は非常に単純です。Python は最も学習しやすいからです。

機械学習を学習する際に Python を使用すると、複雑なデータ型の制約や、変換、ポインタ、メモリ管理、ガベージ コレクションなどの「高度な」(一般的にはこれも複雑な) 機能の学習に気を取られる必要がなくなり、目標に集中できるようになります。もちろん、Python 固有のメソッド (lambda、yield、reduce など) やツール (NumPy、pandas など) をさらに使用し、できるだけ早く習熟する必要があります。

フレームワークに関して言えば、ユーザーの観点から見ると、現在多数存在する機械学習フレームワークは、大きく分けて 2 つの陣営に分けられます。

  • 学術的フレンドリー: Theano、Torch、Caffe

学術研究では、新しいモデル、新しいアルゴリズム、新しい機能を考え出すことはよくあります。新しいブレークスルーを生み出すことも、学術研究の最も基本的な要件です。したがって、これらのフレームワークは通常、モデルのカスタマイズと内部実装の大幅な変更を容易にします。多くの新しい成果は、論文として発表される際に、参考としてこれらのフレームワークの実装コードを提供します。パフォーマンスも優れています。

その代償として、難しい開発言語 (Caffe: C++) またはニッチな開発言語 (Torch: Lua) が使用されるか、奇妙な欠点 (Theano: コンパイルが非常に遅い) が発生します。

さらに、これらのフレームワークでは、「どのようにサービスを提供するか」という問題が考慮されていないようです。サーバーにデプロイしたいですか? Caffe が最も簡単ですが、それでも長くて面倒な道のりになります。

  • 業界向け: Tensorflow、MXNet、Caffe

業界では、多くの場合、「何かを作り、それをうまく機能させること」に重点を置いています。したがって、これらのフレームワークはまず並列トレーニングをサポートする必要があります。このうち、Tensorflow と MXNet は複数マシンと複数カード、単一マシンと複数カード、複数マシンと単一カードの並列処理をサポートしていますが、Caffe は単一マシンと複数カードをサポートしていますが、パフォーマンスは特に理想的ではありません。

私たちのテストでは、Tensorflow のデュアル カード並列処理では、シングル カードの約 1.5 倍のパフォーマンスしか達成できません。カードの数が多いほど、この比率は低くなります。 Caffe の方が優れていますが、パラメータの同期と勾配の計算にはとにかく時間がかかるため、パフォーマンスを低下させずに拡張できるフレームワークはありません。複数のマシンの場合、パフォーマンスの低下はさらに大きくなり、多くの場合、許容できません。

相対的に言えば、Tensorflow だけがより優れたデプロイメント メカニズム (Serving) を提供し、モバイル端末への直接デプロイメントのソリューションを備えています。 MXNet や Caffe では直接コンパイル方式を採用しており、実装は可能ですが、正直言ってまだ非常に面倒です。

欠点としては、Caffe を除く他の 2 つのフレームワークは学術的なトレンドにあまり厳密に従っていません。Tensorflow にはまだ PReLU の公式実装がなく、最近になってようやく一連の検出モデルがリリースされました。 MXNet はこの点ではより積極的ですが、開発者コミュニティが小さいため、多くの成果は優れた開発者の貢献を待つか、単独で達成するしかありません。

この場合、Caffe は最適なフレームワークでしょうか? 学術的側面と実装面の両方、柔軟性とパフォーマンスも考慮すると... 正直に言うと、そう思います。ただし、前提条件として、C++ を知っている必要があります。C++ 開発者でない場合は、信じてください、この言語は機械学習よりも簡単ではありません。

したがって、研究ではなく機械学習の開発に携わることに興味のあるほとんどの学生には、最初の開発フレームワークとして Tensorflow をお勧めします。上記の利点に加えて、最も重要な要素はその高い人気です。どのような問題に遭遇しても、一緒に相談したり勉強したりできる、同じ考えを持つパートナーのグループを見つけることができます。初心者にとって、その重要性は自明です。

  • 実用データ

コースを受講し、言語を学習し、フレームワークをインストールした後は、当然、プログラミングを通じて独自のモデルを実装する必要があります。

しかし、ディープラーニングの分野では、データのないモデルは価値がありません。現在普及している教師あり学習では、トレーニングデータとして十分なラベル付きデータが必要です。では、学習に使えるデータはどこから入手できるのでしょうか? 答えは、公開データセットです。

たとえば、論文を研究するときに、優れたパフォーマンスを示すモデルや手法が提案されている場合、通常はいくつかの公開標準データセットの結果が添付されています。これらの標準データセットは、研究や使用のためにダウンロードできるリソースです。さらに、Kaggle や Tianchi などの機械学習コンテストでも、学習やテストのためのデータセットが多数提供されています。これらは学習フェーズ中の主なデータソースです。

CV 分野を例にとると、一般的な公開データセットには次のものが含まれます。

  • MNIST

どの教科書やフレームワークを選択するかに関係なく、機械学習を初めて始めるときには、必ず MNIST に遭遇することになります。これは Yann LeCun が作成した手書きのデジタル ライブラリです。各データは 784 バイト固定で、28 x 28 のグレースケール ピクセルで構成されており、次のようになります。

目標は、入力に対して 10 クラス分類を実行し、各手書き数字が表す実際の数値を出力することです。

サイズが小さい(約10M)、データ量が多い(トレーニング画像6万枚)、応用範囲が広い(NN/CNN/SVM/KNNの実行に使用可能)ことで有名で、機械学習の世界におけるHello Worldに相当する存在です。 LeCun の公式 MNIST ウェブサイト (yann.lecun.com/exdb/mnist/) には、このデータセットを実行するさまざまなモデルの最高スコアも掲載されています。現在の最高スコアは CNN で、約 99.7% です。

データセットは非常に小さいため、CPU でも NN のトレーニングには数秒しかかからず、単純な CNN モデルのトレーニングには数分しかかかりません。

  • シーファー

画像から始めようと考えている学生にとっては、CIFAR データベース (公式 Web サイト: www.cs.toronto.edu/~kriz/cifar.html) がより良い入門オプションです。

データベースは、CIFAR-10 と CIFAR-100 の 2 つのバージョンに分かれています。名前が示すように、CIFAR-10 には 10 のカテゴリがあり、各カテゴリには 5000 枚のトレーニング イメージと 1000 枚のテスト イメージがあり、各イメージは 32 x 32 ピクセルの 3 チャネル ビットマップです (図 2 を参照)。

CIFAR-100 には 100 のカテゴリがあり、各カテゴリは 500 枚のトレーニング画像と 100 枚のテスト画像になりますが、画像のサイズは変わりません。

MNISTよりも画像処理入門に適している理由は、解像度は低いものの、3チャンネルの実写写真であることです。これらの写真の一部の背景は少し複雑で、実際の画像処理シナリオに近いものになっています。相対的に言えば、MNIST のグレースケール入力とクリーンな背景は単純すぎるため、99.7% の精度率では改善の余地がほとんどありません。

Tensorflow は CIFAR のルーチンを提供します。

詳しくはこちら

コードも添付されています:

https://github.com/tensorflow/models/tree/fb96b71aec356e054678978875d6007ccc068e7a/tutorials/image/cifar10

  • ImageNet と MS COCO

ImageNet (www.image-net.org/) と COCO (http://mscoco.org/) は、産業レベルの画像データセットです。通常、ImageNet は ILSVRC2012 のトレーニング セットを指し、COCO は COCO-2014 のトレーニング セットを指します。

ImageNet には、多数の画像 (100 万枚以上、1,000 のカテゴリに分かれている) と注釈があり、そのほとんどは図 3 のようなものです。

COCO には写真が少ないものの (80 のカテゴリに 80,000 枚以上の写真)、各写真には輪郭線が付いており、カテゴリの注釈と 5 つの説明文 (英語) が付いています。おおよそ図4のようになります。

[[210091]]

したがって、実際の作業段階に入る際には、ベンチマークや事前トレーニングデータセットとして、具体的なニーズに応じて適切なデータセットを選択する必要があります。

実戦ステージでのマシン構成の学習

次に、helloAI を記述して実行するためのフレームワークを構築するためのマシンが必要です。しかし、私は多くの場所で友人たちがこう尋ねているのを目にします。

  • 機械学習を学習するにはどのような構成が必要ですか?
  • GTX1080/TITAN/Teslaを購入する必要がありますか?
  • グラフィック カードをいくつインストールすればよいですか? 1 枚ですか? 2 枚ですか? 4 枚ですか?

答えは次のようになります:

「GPU が必要です。少なくとも 1080 です。クアッドタイタンがなければ、人々に挨拶することすらできません!」

実際のところ、それは完全に真実ではありません。

始めたばかりで学習中の場合、CPU または GPU はコードとフレームワークの学習にまったく影響しません。 MNIST や CIFAR のようなおもちゃのデータセットを実行すると、それほど大きな差はありません。私のマシンを例に挙げると、組み込みの CIFAR デモを実行すると、i7 CPU と GTX 1080 Ti の速度はそれぞれ 770 pics/s と 2200 pics/s になります。 GPU のパフォーマンス上の利点は 3 倍未満です。つまり、そのギャップは実際にはそれほど大きくないのです。

もう一つのヒントがあります。Tensorflow の CPU バージョンを使用する場合は、pip を使用してダウンロードするのではなく、自分でコンパイルするのが最適です。開発マシンでコンパイルすると、サポートされているすべてのアクセラレーション命令セット (SSE4.1/SSE4.2/AVX/AVX2/FMA) が自動的にオンになり、CPU の動作が大幅に高速化されます。当社のテストによると、すべての加速命令セットをオンにすると、トレーニング速度が約 30% 向上し、予測速度が約 2 倍になります。

もちろん、実際の生産上の問題に対処するために複雑なモデルを実際に使用したい場合、モデルの複雑さとデータの量は、CIFAR などのおもちゃのデータセットとは比較になりません。当社の製品モデルの 1 つを使用して CIFAR データセットを実行すると、他のパラメータと条件は同じで、i5/i7/960/GTX1080/GTX1080Ti での速度はそれぞれ 19/25/140/460/620 (pics/s、大きいほど良い) になります。ここで違いが分かります。1080Ti は i7 CPU の約 25 倍です。モデルが使用(推論)されると、GPU は 10 ~ 20 倍のパフォーマンス上の利点が得られます。モデルが複雑になるほど、GPU の利点は明らかになります。

全体的に、入門段階で学習しているのであれば、最初に GPU 搭載のマシンを購入せず、代わりに既存のマシン (CPU バージョン) を使用してフレームワークと基本事項を学習することをお勧めします。基礎をしっかり理解したら、当然、より複雑なモデルやより「リアルな」データを実行したいと思うようになります。この時点で、トレーニング時間を短縮するために GPU の購入を検討できます。

GPU を選択する際に、GTX1070×2 のようなオプションを推奨する友人がいると聞きました。理論上、1070 の性能は 1080 の約 75% に達しますが、価格は 1080 の半分にすぎません。あらゆる面から見ると、デュアル 1070 の方が利点が多いようです。ただし、デュアル グラフィック カードのパフォーマンスはシングル カードの 2 倍には達しないことを忘れないでください。現在の Tensorflow では、約 1.5 倍しか達せず、これは実際にはシングル 1080 カードとほぼ同じです。デュアル グラフィック カードのマザーボード、電源、シャーシの冷却にはさらに考慮が必要であり、コスト効率の観点から見ると、実際にはコスト効率が良くない可能性があります。

ただし、グラフィック カードの予算が 5000 ~ 6000 の範囲であれば、デュアル 1070 にも利点があります。たとえば、複数のグラフィック カードを使用して並列コンピューティングを行う方法を学ぶことができます。急いでいないときは、2 つのグラフィック カードを使用して、2 つの異なるタスクを同時に実行できます。組み合わせると、16G のビデオ メモリなどを持つことに相当します。これらの要素を考慮すると、デュアル 1080/デュアル TITAN を購入する余裕がない場合は、デュアル 1070 が初心者にとって最適な選択です (笑)。

ラップトップをメインの学習マシンとして使用する予定の場合、Linux の使用経験が豊富であるか、GPU アクセラレーションを使用する予定がない限り、ラップトップを使用しないことをお勧めします。多くのラップトップでは、Liunx をインストールするとドライバーの問題が発生し、GPU アクセラレーション使用時の高熱もシステムの安定性に大きな影響を与えます。豊富な経験がなければ、小さな問題のために貴重な学習時間を数時間も無駄にしてしまうことがよくあります。

それでは、最初のモデルを試してみてはいかがでしょうか?

Tenforflow をインストールしたら、次の方法を使用して最初の CIFAR デモをできるだけ早く実行できます。

データのダウンロードには数分しかかかりませんが、最初の「画像認識モデル」がトレーニングされているのを確認できます。

トレーニングプロセス中、ログに損失情報が継続的に出力されていることがわかります。ただし、損失を追跡するだけでなく、現在のトレーニングモデルの認識精度も確認する必要があります。これは、cifar10_train.py スクリプトでは提供できないものです。また、実装する必要がある

このスクリプトは、最新のチェックポイントの認識精度を継続的に検証します。

GPU を使用している場合、トレーニング スクリプトの実行後に、すべてのビデオ メモリがこのプロセスによって占有されていることがわかります。検証スクリプトを再度開始すると、メモリ不足 (OOM) エラーが多数発生します。これは、Tensorflow のメカニズムによって決まります。実際にそれだけ使用できるかどうかに関係なく、デフォルトですべてのグラフィック カードのビデオ メモリがすべて占有されます。

この問題の解決策も非常に簡単です。

まず、Tensorflow がトレーニングに使用するグラフィック カードを指定できます。これを行うには、スクリプトを実行する前にコマンドラインで環境変数を指定します。

「0,2」は、使用する GPU 番号で、0 から始まり、カンマで区切られます。

または、コード内に GPUOption を作成し、visible_device_list='0,2' を設定することで同じ効果を実現できます。

次に、Tensorflow が使用するビデオ メモリを制限して、起動時にいっぱいになるのではなく、動的に増加するようにすることもできます。方法は上記と同様です。コード内に GPUOption を作成し、allow_growth=True を設定します。

公式の CIFAR ルーチンは約 86% の精度を達成できますが、これは現在では比較的低いものです。最新モデルの精度は通常約 97% であり、慎重なパラメータ調整を行わないカジュアルなトレーニングでも簡単に約 93% に到達できます。より良い結果を得るために、cifar10.py で定義されたモデルを変更してみることができます。

最後に、そして最初に

長くて苦しいけれど楽しい学習と実践を経て、あなたは機械学習のインサイダーとみなされるはずです。しかし、これでこの道が終わったわけではありません。逆に、これらすべてを完了すると、機械学習のキャリアの第一歩を踏み出したことになります。

現時点では、業界はまだアルゴリズム配当期にあり、新しいアルゴリズムや新しいモデルが絶え間なく登場しています。CV 分野だけでも、arXiv に毎日 20 ~ 30 本の論文が掲載されており、毎年トップクラスのカンファレンスやジャーナルに掲載される成果は前年、さらには前月の記録を大幅に上回っています。

しっかりとした基礎を築いた後、この業界に参入した、または参入することを決めた場合、この段階では、論文に従って再現し、学習して考えることが毎日の宿題になります。少しでも気を緩めれば、時代の流れに取り残され、ついていけなくなってしまう事態に陥ってしまいます。つまり、この時点で、一部の人にとっては終わりですが、他の人にとっては始まりに過ぎません。

この時点で、私たちは戻って、以前の質問をもう一度自問することができます。

  • 「この業界に入りたいかどうか、本当によく考えただろうか?」
  • 「他の人よりも一生懸命努力して、この道を進み続けることができるだろうか?」
  • 「すべての苦痛と挫折を乗り越えても、機械学習への情熱は私を突き動かし続けるだろうか?」

私はこの道を歩いています、そしてたくさんの人がこの道を歩いています、それであなたは来ますか?

<<:  ソフトマックスボトルネックを超えて: 高ランク RNN 言語モデル

>>:  Tech Neo 10月号: 同時実行最適化

ブログ    
ブログ    
ブログ    

推薦する

1080ti だけで、リモートセンシング画像内のピクセルレベルでターゲットを見つけることができます。コードデータセットがオープンソース化されました!

長すぎて読めないこの論文では、新しいタスクである方向リモートセンシング画像セグメンテーション (RR...

人工知能サイバーセキュリティの市場価値は2030年までに1018億ドルに達する

[[418355]]調査会社Research And Marketsの最新レポートによると、人工知能...

今日のアルゴリズム: 文字列の乗算

[[421393]]この記事はWeChatの公開アカウント「3分でフロントエンドを学ぶ」から転載した...

...

...

アルゴリズムの改善とハードウェアの反復、どちらがより収益性が高いでしょうか? MITの最新の研究結果がこの答えを提供している

コンピューターが登場する前には、アルゴリズムがありました。コンピュータの誕生により、コンピュータの強...

半日で2000件のいいねを獲得、李菲菲の弟子が33のニューラルネットワークトレーニングの秘密を公開

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

人工知能の「指紋採取」が検出困難な癌と闘う

検出が難しい膠芽腫などの癌の生存率は1桁ですが、早期治療には検出、治療、監視のための高度な技術が必要...

バーチャル試着室テクノロジーの仕組み

[51CTO.com クイック翻訳]テクノロジーの進歩と発展により、バーチャル試着室が人々の生活に入...

デジタルヒューマンとは何か、そしてその将来性はどのようなものでしょうか?

今日の技術的に進歩した世界では、生きているようなデジタルヒューマンが大きな関心を集める新たな分野とな...

ついにAI、BI、ビッグデータ、データサイエンスをわかりやすく説明する人が出てきた

[[427319]] 01 データデータは、携帯電話に残すデジタルフットプリントから健康記録、買い物...

人工知能(AI)の今後の動向

[[417224]] 21 世紀以降、人工知能は世界中で新たな科学技術革命と産業変革を主導し、人々の...

AIとインフラストラクチャのゲームチェンジャーが市場で成熟しつつあります。

機械学習が「人間レベル」の能力に到達するには、多くのトレーニング反復とラベル付きデータが必要です。こ...

Jupyter のアップグレード: さまざまな大規模モデルを接続し、コードを生成し、チャットを通じてエラーを修正できます

これで、大規模言語モデル (LLM) が Jupyter に接続されました。これは主に、Projec...

2020 年に爆発的に増加する 9 つの AI マーケティング トレンド

マーケティングに AI を使用すると、代理店の専門家の作業がさまざまな点で楽になります。消費者に合わ...