Modular の詳細説明: LLVM の父は未来の AI エンジン言語をどのように作成するのか?

この記事の構成

**1.コンパイラとは何ですか? **

2. LLVM の父 Chris Lattner について

※XLA、MLIRとは何ですか ※LLVMとは何ですか? ※クランとは何ですか ※ClangとLLVMの関係

3.モジュラーについて

  • モジュラー — 人工知能エンジン ※GoogleのTPUについて ※ディープラーニングとプログラマビリティについて *実際にエンジンを構築する際の技術的な課題は何ですか?

4. 起業家精神、エンジニアリング チームの構築、AI の将来について

**1. コンパイラとは何ですか? **

コンパイラは、高級プログラミング言語をコンピュータの実行可能コードに変換するソフトウェア ツールです。コンパイラは、プログラマーによって書かれたソース コードを、コンピュータが理解して実行できるバイナリ命令に変換します。これらの命令は、実行可能コードにパッケージ化されます。ファイルまたはライブラリを使用して、コンピュータ上でプログラムを実行します。

コンパイラの主なワークフローは、ソース コード → プリプロセッサ → コンパイラ → オブジェクト コード → リンカ → 実行可能プログラム (ユーテーブル) です。

もう一つの鮮やかな例:

*先生:子供たち、今日は足し算の勉強をします。 *

かくかくしかじか ……

*子どもたち:先生、勉強になりました。 *

先生:これで、1+1= が理解できましたね。コンパイラ

2. Chris Lattner、LLVM の父

モジュラーについて話す前に、まず Chris Lattner の経験について話しましょう。彼は 1978 年にカリフォルニアで生まれ、サンフランシスコのベイエリアで育ちました。彼は幼い頃からプログラミングを始めました。その後、コンピューターの学士号を取得しました。カリフォルニア大学バークレー校で科学の学位を取得し、スタンフォード大学でコンパイラの最適化と自動並列化に焦点を当てて博士号取得を目指しました。

Chris Lattner は博士課程在学中に LLVM の開発を主導し、LLVM のおかげで 2012 ACM Software Award** (ACM Software Award)**** を受賞しました。 その後、Lattne は Apple に雇われ、Clang コンパイラー フロントエンド、Swift (Objective-C に代わる言語) プログラミング言語、 Xcode開発環境の改善。 Swift 言語は、そのシンプルさとパフォーマンスで広く人気があり、iOS、macOS、その他の Apple プラットフォームでのアプリケーション開発に開発者によって使用されています。

Chris Lattner氏はAppleを退職した後、TeslaやGoogleなどの企業に勤務し、プログラミング言語やコンパイラ技術の分野で研究論文の出版やオープンソースプロジェクトへの参加を続け、Tensorflowインフラストラクチャチームのリーダーを担当しました。 Google で XLA と MLIR を作成しました。

ここでは、XLA と MLIR について説明します。

XLA (Accelerated Linear Algebra) は、ソース コードを変更することなく、TensorFlow モデルを高速化できるドメイン固有の線形代数コンパイラーです。 **** 実行速度が向上し、メモリ使用量が改善されます。 ***

***MLIR (Multi-Level Intermediate Representation:Multi-Level Intermediate Representation) はコンパイラ フレームワークです。その設計はコンパイラを最適化し、基本的にコンパイラ設計のすべての共通部分をカバーします。コンパイラ開発者を容易にします。 *

**さらに重要なのは、LLVM とは何ですか? **(以下は短冊からの抜粋です。原文は参考リンクをご覧ください)

**LLVM は、モジュール式の再利用可能なコンパイラとツール チェーン テクノロジの集合として理解できます。 LLVM (実際には Low Level Virtue Machine の完全名ですが、仮想マシンとして使用されたことはありません) したがって、次の LLVM は頭字語ではなく、プロジェクトの完全名です。

次に、従来のコンパイラ アーキテクチャは次のようになります:

分解すると次のものが含まれます。

※フロントエンド:フロントエンド(字句解析、構文解析、意味解析、中間コード生成) ※オプティマイザー:オプティマイザー(中間コードの最適化)

  • バックエンド: バックエンド (マシンコードを生成)

LLVM アーキテクチャは次のようになります

正確に説明すると、LLVM はコンパイラに次のような多くの革新を加えました。

  • 異なるフロントエンドとバックエンドは、統一中間コード LLVM Intermediate Representation (LLVM IR) を使用します。
  • 新しいプログラミング言語をサポートする必要がある場合は、新しいフロントエンドを実装するだけで済みます
  • 新しいハードウェア デバイスをサポートする必要がある場合は、新しいバックエンドを実装するだけで済みます
  • 最適化フェーズはユニバーサル フェーズであり、統合 LLVM IR を対象としており、新しいプログラミング言語や新しいハードウェア デバイスをサポートしているかどうかに関係なく、最適化フェーズを変更する必要はありません。
  • これに対して、GCC ではフロントエンドとバックエンドがあまり分離されておらず、フロントエンドとバックエンドが結合しています。したがって、GCC が新しい言語や新しいターゲット プラットフォームをサポートすることは特に困難になります。
  • LLVM は現在、さまざまな静的および実行時コンパイル言語 (GCC ファミリ、Java、.NET、Python、Ruby、Scheme、Haskell、D など) を実装するための共通インフラストラクチャとして使用されています。

**クランとは何ですか? **

LLVM プロジェクトのサブプロジェクトで、LLVM アーキテクチャに基づく C/C++/Objective-C コンパイラ フロントエンド。 GCC と比較して、Clang には次の利点があります。

  • 高速なコンパイル速度: 一部のプラットフォームでは、Clang のコンパイル速度は GCC よりも大幅に高速です (デバッグ モードでの OC のコンパイル速度は GGC の 3 倍です)。
  • 小さいメモリ フットプリント: Clang によって生成された AST が占有するメモリは GCC の約 5 分の 1 です。
  • モジュラー設計: Clang はライブラリベースのモジュラー設計を採用しており、IDE との統合や他の目的での再利用が簡単です。
  • 診断情報の可読性が高い: コンパイル プロセス中に、Clang は大量の詳細なメタデータ (メタデータ) を作成して保持します。これは、デバッグやエラー レポートに役立ちます。
  • デザインは明確でシンプルで、理解しやすく、拡張や強化が簡単です。

Clang と LLVM の関係

LLVM のアーキテクチャ全体としては、フロントエンドとして Clang が使用されており、広義の LLVM は LLVM アーキテクチャ全体を指し、狭義の LLVM は LLVM バックエンド (コード最適化やターゲット コード生成を含む) を指します。

ソース コード (c/c++) は、clang --> 中間コード (一連の最適化の後、最適化に Pass が使用されます) --> マシン コードを通過します。

参考: Jianshu - 2018 年 8 月 12 日 - LLVM とは何かを理解するための簡単な説明

3. モジュラーについて

モジュラー—人工知能エンジン

  • **C****hris Lattner 氏は、コンパイラーとモジュラーとしての起業家精神についてどう考えていますか? **

C****hris Lattner:「私が Modular を作成したのは、ハンマーで釘を探したり、イノベーションのためのイノベーションではありません。現在、OpenAI のような企業では、少数の従業員が多額の費用を費やす必要があります。 CUDA カーネルを手動で作成するのに多くの時間がかかります。しかし、AI コンパイラの最適化を使用すると、ソフトウェアのコラボレーションを改善し、さまざまなスキルや知識を持つ人々の能力を拡張できます。」

**「コンパイラの最終形態は、ユーザーがハードウェアについてあまり知らなくても、非常に単純なアセンブリ コードを使用してあらゆるタスクを完了し、問題を解決できるようにすることです。コンパイラの本当の役割は、より高い抽象レベルを使用して表現することです。 **」

*「*NVIDIA が発表した FasterTransformer は、パフォーマンスを大幅に向上させることができます。そのため、多くの大規模なモデル会社や開発者が FasterTransformer を使用しています。しかし、Transformer の分野で革新したい場合は、FasterTransformer によって制限されることになります。」

  • **つまり、コンパイラの役割はその一般化にありますが、ここでの一般化をどのように理解すればよいでしょうか。 **

C****hris Lattner: FasterTransformer と同じかそれ以上の結果を得たいが、他の一般的なアーキテクチャ (ここでは Transformer 以外のアーキテクチャ) を使用する場合は、コンパイラを通じて両方の長所を得ることができます。その結果、研究中と同様の優れたパフォーマンスが得られる、つまりコンパイラレベルでの最適化は「AIエンジン」に相当し、将来のLLMアーキテクチャの変革を支援することができます。

  • **Mojo は現在非常に人気があり、Python エコシステムと互換性がありますが、Modular の目標は統合された人工知能エンジンを構築することです。では、あなたの観点から見て、人工知能の研究開発の分野で解決する必要がある現在の問題は何ですか? **

Chris Lattner: 人工知能が急速に発展した 2015 年、2016 年、2017 年の時期に戻ると、その時代のテクノロジーは主に TensorFlow と PyTorch によって牽引されていました。PyTorch は TensorFlow より少し遅れて登場しました。しかし、どちらもいくつかの点では似たデザインです。 **しかし、TensorFlow や PyTorch システムを構築および設計する人々は主に人工知能、微分方程式、自動微分のバックグラウンドで構成されており、ソフトウェアとハードウェアの境界問題は解決されていません。 **

したがって、Keras* が必要です (: Keras は、Python で書かれたオープンソースの人工ニューラル ネットワーク ライブラリです。これは、Tensorflow、Microsoft-CNTK、および Theano の高レベルのアプリケーション プログラミング インターフェイスとして使用できます。深層学習モデルの設計、デバッグ、評価、適用、可視化 ) または nn.Module (注: nn.Module * は PyTorch 独自の概念であり、頻繁に使用されるクラスでもあります)使用済み*)*。

これらの最下層は実際には演算子であり、畳み込み、行列の乗算、リダクション アルゴリズム、および要素ごとの演算をどのように実装するか? CUDA とインテル MKL (インテル マス カーネル ライブラリ) を使用し、これらの基盤に基づいて構築を続ける必要があります。

このモデルは最初は問題ありませんが、問題も存在します。最初は演算子の数が非常に少ないです。しかし、新しいハードウェアが導入される限り、たとえそれが Intel によって導入された新しい CPU バリアントであっても、計算の複雑さは大きくなります。現在、TensorFlow と PyTorch には、それぞれがカーネルと呼ばれる何千もの演算子があり、すべてのカーネルは人間が手動で記述する必要があります。

(注: チップ業界における IP は一般に IP コアとも呼ばれます。IP コアとは、チップ内に独立した機能を持つ回路モジュールの成熟した設計を指します。この回路モジュールの設計は、この回路モジュールを含む他のチップ設計に適用できます。これにより、設計作業負荷が軽減され、設計サイクルが短縮され、チップ設計の成功率が向上します。この回路モジュールの成熟した設計は、設計者の知恵を体現し、設計者の知的財産権を反映しています。そのため、チップ業界は IP コアを使用して、この回路モジュールの成熟した設計を示します。IP コアはチップ設計の中間コンポーネントとしても理解できます)

つまり、新しいハードウェアが発売されると、何千ものカーネルを書き換えなければならないため、そのハードウェアに参入する敷居はますます高くなり、さらに、この状況は科学研究にとっても多くの困難をもたらします。これらのカーネルがどのように機能するかを知っている人はほとんどいません。

(注: カーネル開発は多くの場合ハードウェア プラットフォームに固有であるため、FPGA や DPU は言うまでもなく、nvidia ですら汎用的ではありません。カスタム オペレーターは、ハードウェア プラットフォーム ソフトウェアのコンピューティング機能を拡張する主要なチャネルです)

また、現在多くの人が CUDA カーネル* (注: カーネル: GPU 上の CUDA によって実行される関数の名前)* を作成していますが、ここでのエンジニアのスキル プロファイルは、システムを革新できるスキルとはまったく異なります。モデルアーキテクチャ。 **その結果、多くの人工知能システムは、カーネルを作成できる技術専門家を見つけることができないという課題に直面しています。 **

*(注: *計算に GPU を使用する場合、すべての計算プロセスを GPU カーネルにカプセル化し、GPU 上で順次実行できます。汎用性を高めるために、従来の演算子ライブラリは非常に基本的な設計であるため、たくさんあります)

Google の TPU について

私は Google に在籍していたときに Google の TPU プロジェクトに参加していましたが、そのとき TPU チームが直面した課題は次のとおりでした: 市場には何千もの異なるカーネルがあるが、どうやって新しいハードウェアを発売するか?当時、多くの同僚も、これを実現するためにコンパイラーを使用できるかどうかについて言及しました。 **したがって、何千ものカーネルを手書きし、これらの演算子をすべて書き換えて、インテルや NVIDIA のような独自のエコシステムを完全に作成する代わりに、コンパイラーはさまざまな方法で実行できるため、手動よりも柔軟性が高くなります。また、カーネルを一致させることで、多くのパフォーマンスを最適化することもできます。 **

**コンパイラはこれを一般的な方法で実現できますが、従来の手書きのカーネルを使用した場合、得られるのは研究者が望む新しいものではなく、人々が興味深いと考えるカーネルの固定配置でなければなりません。 **そこで、Google の XLA (上で説明: Accelerated Linear Algebra: 加速線形代数) が誕生しました。 XLA はエクサフロップレベルの大規模コンピュータをサポートできますが、問題は再び発生します。XLA は Google の TPU をサポートするために登場しました。

**コンパイラを構築するのは非常に難しく、スケーラビリティの問題もまだ残っています。現在、多くの機械学習エンジニアリング プロジェクトを完了するにはコンパイラ エンジニアを雇用する必要があり、機械学習とそれに関連するさまざまな知識を理解しているコンパイラ エンジニアはさらに重要です。十分。さらに、XLA はスケーラブルではなく、TPU でのみ動作します。 **

ディープラーニングとプログラマビリティについて

AlexNet の誕生やディープ ラーニングの発展など、NVIDIA の CUDA とディープ ラーニングの開発の歴史を振り返ると、多くの人が AlexNet の誕生はデータ、ImageNet + コンピューティング、およびデータの組み合わせの結果であると信じています。 GPUの力。 **

(注: 2012 年、深層学習の 3 人の巨人の 1 人であり、チューリング賞を受賞したジェフリー ヒントンの生徒であるアレックス クリジェフスキーとイリヤが AlexNet を提案し、その年の ILSVRC で大幅なアドバンテージでチャンピオンシップを獲得しました。 3番目 2. この成果は学界や産業界から大きな注目を集め、コンピュータビジョンは徐々にディープラーニングが主流の時代に入りました)

**しかし、多くの人は「プログラマビリティ」の重要性を忘れています。 **

なぜなら、研究者が以前は存在しなかった畳み込みカーネルを発明できるようにしたのは CUDA であり、当時は TensorFlow が存在していなかったからだ。 **実際、データ、計算、プログラマビリティの組み合わせによって、新しい研究による深層学習システムの波全体の立ち上げが可能になります。 **

**したがって、過去の出来事や歴史から学ぶことが非常に重要です。では、どうやって次のステップに進むのでしょうか?人類の驚くべきアルゴリズムの革新とアイデアから誰もが恩恵を受けることができるこのテクノロジーの次の時代に、私たちはどのように移行するのでしょうか? **コンパイラの利点をどのように活用できますか?コンパイラーの規模と汎用性をどのように活用して、新しい問題を解決できるでしょうか? **最も重要なのは、プログラマビリティからどのようなメリットが得られるかということです。これが私たちが取り組んでいるモジュラー、つまり人工知能エンジンです。 **

人工知能の未来について

  • **人工知能開発の将来をどのように見ていますか?異なるプロフィールや方向性を持つチーム間のコラボレーションがさらに増えると思いますか?コンパイラの専門家ではない人でもコンパイラを簡単に使用できるようにすることが目標の 1 つですか? **

**クリス・ラトナー: **人間は素晴らしいですが、自分の頭の中にすべてを収めることはできません。**さまざまなタイプや専門分野を持つ人々が協力すると、他の人よりも優れたものを生み出すことができます。たとえば、たとえば、私にはいくつかの能力があります。 , でも微分方程式なんて基本的に覚えられないですよね?つまり、LLM アーキテクチャの次の発明者は決して私ではありません (笑)。

**しかし、システムの観点から考えてみると、これらの人々に貢献し、協力してもらい、これらがどのように機能するかを理解してもらうことができれば、画期的な進歩が得られるでしょう。 **発明を促進するにはどうすればよいですか?問題のさまざまな部分を理解しているより多くの人に実際に協力してもらうにはどうすればよいでしょうか? **したがって、Mojo とエンジンの探求は、問題の複雑さを解消するための取り組みです。なぜなら、単純に集約されただけのすでに構築されたシステムがたくさんあるからです。 **

ここでの解決策は通常、トップダウンで設計されるのではなく、問題の解決にのみ基づいています。そして、Modular は、スタック全体の複雑さを軽減するのに役立つ、よりシンプルなスタックを提供すると思います。リファクタリングしないと、断片化された混沌とした歴史* (人工知能分野における断片化)* をたどることになります。少し変更するとクラッシュするか、パフォーマンスが低下するか、動作しなくなります。この状況は、基礎となる層の断片化によって発生します。

  • **コンパイラーを理解する方法: コンパイラーと言語は人間のコラボレーションまたはクロスオーバーのための媒体ですか? **

Chris Lattner: 私が Modular を作成したのは、ハンマーで釘を探すためでも、イノベーションのための革新のためでもありません。現在、OpenAI のような企業では、少数の従業員が CUDA を手動で記述するために多くの時間を費やす必要があります。カーネル。 **ただし、AI コンパイラーの最適化を使用すると、ソフトウェアのコラボレーションを改善し、さまざまなスキルや知識を持つ人々の能力を拡張できます。 **

コンパイラの最終的な形式は、ユーザーがハードウェアについてあまり知らなくても、非常に単純なアセンブリ コードを使用して任意のタスクを完了し、問題を解決できるようにすることです。コンパイラの本当の役割は、より高い抽象レベルでタスクを実行できることです。 . エクスプレス。コンパイラーは、手動プログラミングが必要となる一般的な最適化を適切に自動化する方法でもあります。

最初の目標は、プロセスを可能な限り合理化することです。

2 番目の目標は、多くの複雑さを頭から追い出すと、新しい複雑さを受け入れる余地ができることです。 さらに、抽象化を通じてコンパイラを活用することができます。コンパイラは細部に限りなく注意を払うことができますが、人間にはそれができないからです。

**抽象レベルが高くなると、他の多くの能力も得られます。 **ディープ ラーニング システムとモジュラーは、計算をグラフィカル レベルまで高めました。これをどう説明しますか? ここでの意味は、for ループなどの複雑なプログラミング ステートメントから解放され、より宣言的になると、計算モデルが変更されることを意味します。多くの人はまだこれに気づいていませんが、私はそれが可能だと思います。既存のシステムでは頭の痛い問題が発生しやすいため、抽象化によって提供される機能の多くはPmapとVmapを実装することになります(注: この2つの機能には自動導出と並列化が含まれます)。

技術の向上は、適切に構造化された多数のシステム、多数の新しい高性能コンピューティング ハードウェア、および数多くのブレークスルーによって恩恵を受けてきました。** したがって、私は非常に期待しています。モジュラーはシリーズの複雑さを打破し、より幅広い用途と人気を得ることができ、これは素晴らしいことです。 **

(注: 宣言型プログラミングと通常のプログラミングの最大の違いは、時間の概念が追加されていることです。実行リンク全体の一方向の時間を維持する代わりに、過去、現在、未来を定義できます。ここに演算子、あっちに演算子を書いて静的なグラフをまとめるのではなく、定義内容を簡略化し、「演繹」によって計算グラフを得ることができます)

  • **Modular の人工知能エンジン、人工知能フレームワーク、人工知能コンパイラーを定義できますか? **

Chris Lattner: 大規模なモデルをトレーニングする場合、ほとんどの人は PyTorch などのツールを使用します。そのようなシナリオでは、CUDA または Intel MKL が間もなく導入されます。私はこれらのタイプのエンジンを総称して呼び、エンジンには主にはハードウェア インターフェイスを指し、Modular は TensorFlow、PyTorch などを導入できる新しいエンジンを提供します。その後、ユーザーは正しい抽象化に基づいて、新しい方法で操作を実行し、ハードウェア プログラミングを実行でき、クールな実装を作成できます。

  • **定義によると、Modular はフレームワーク層とハードウェア層の間に基づいているため、Modular のペタフロップス (1 秒あたりに実行できる浮動小数点演算の数) を知りたいと考えています。 A100 では、しかし、Web サイトはすべて CPU であり、GPU が表示されないことがわかりました。そこで質問なのですが、みんなGPUを高速化しようと頑張っているのに、なぜCPUを先に動かそうとするのでしょうか? **

クリス・ラトナー: 第一原理から考えると、一番下から始めなければなりません。今日の人工知能システムをどのように定義しますか?多くの人が毎日 GPU について話し、議論していますが、すべてが GPU に関係しているように思えます。しかし、人工知能は実際には大規模で異種の並列コンピューティングの問題です。そのため、従来の人工知能はデータの読み込みから始まり、GPUはデータを読み込まないため、データの読み込み、前処理、ネットワーク化などの一連の作業と大量の行列計算を実行する必要があります。

GPUを駆動するには必ずCPUが必要です。 Accelerator 用のソフトウェアを開発すると、さまざまな問題が存在することがわかりますが、開発者が何を重要だと考えるかは、解決したい問題の重要な部分です。そのため、全員が問題に基づいてシステムを構築し、チップの要件に完全に従って設計する必要がありました。 **

**技術的な観点から見ると、Modular はユニバーサル コンパイラを構築したいと考えています。ユニバーサルからバーティカルに移行するのは簡単ですが、XLA に関する私の経験では、特殊なものから始めてそれを一般化するのは現実的ではありません。 。 **

人工知能業界の場合、トレーニングの規模は研究チームの規模に直接比例し、推論の規模は製品の規模、ユーザーベースなどに直接比例します。 **したがって、多くの推論は依然として CPU 上で実行されます。そこで、まず CPU から始めて、アーキテクチャを改善することにしました。CPU はより使いやすく、利用できなくなることはありません。一般的なアーキテクチャが完成した後、拡張を続けることができます。」さらに現在、GPU にも取り組んでおり、間もなく発売される予定であり、時間の経過とともにこれらのさまざまなタイプのアクセラレータに拡張される予定です。 **

  • **実際にエンジンを構築する際の技術的な課題は何ですか? **

Chris Lattner: 私たちのチームのメンバーは、基本的に業界のすべてのコンパイラーと関連エンティティに精通しています。たとえば、私は XLA と TensorFlow の研究に参加しており、PyTorch、TVM、Intel OpenVINO のメンバーもいます。 、Onyx Runtime 誰もが直面している課題は、多くのシステムが 5 ~ 8 年前に設計されたものであるということです。当時の人工知能は今とは異なり、大きな言語モデルがありませんでした。

**問題は、システムを構築するとき、最初はコードの束として始まり、その後、どんどん大きくなってしまうことです。そして、システムの進化が速ければ速いほど、根本的な変更を加えることが難しくなります。そこで私たちは最初からやり直すことにしました。 **

それでもカーネルを手動で記述したい場合は、最初に C++ でプロトタイプを作成し、その後徐々に mojo を導入します。つまり、すべての最先端のテクノロジを適用し、さらに優れた技術を備えた非常に複雑な自動フュージョン コンパイラを構築できます。最先端のもの、テクノロジー。

ユーザーは静的な形状の制限やプログラム可能性の欠如を嫌うことを私たちは知っています。たとえば、彼らは Tensor* だけに束縛されることを望みません (注: Tensor は実際には多次元配列であり、高次元の行列とベクトルを作成することを目的としています。多くの大規模モデルには不規則な Tensor があります)*

  • **モジュラーの設計目標はありますか?それとも原則? **

クリス・ラトナー: 体系的な一連の原則を持っているかどうかはわかりませんが、一連の原則を持つということは、ハンマーを持ってすべてが釘であることに似ているように思えます。 **しかし、私たちがしなければならないことの多くは、ハードウェアの可能性を解き放ち、非常に使いやすい方法でそれを行うことです。したがって、開始条件の多くは、新しいことを可能にするというよりも、物事を成し遂げる際の複雑な問題を解決することに重点が置かれているため、どちらかというと設計とエンジニアリングに似ています。 **

LLM 企業とチャットすると、特定のメモリ サイズの GPU と A100 GPU に 2 億米ドル以上を費やしていることが簡単にわかります。**誰もが GPU (計算能力) を通じてあらゆる可能性を手に入れたいと考えています。チップの内部に入り込んで可能性を解き放とうとしている人がたくさんいる一方で、さらなる移植性、汎用性、抽象化を望んでいる人もたくさんいます。 **

したがって、ここでの課題は、すべての機能を放棄することなく、デフォルトで抽象化を実現できるようにシステムを設計する方法になります。同様に、多くのコンパイラ、特に機械学習コンパイラは、基本的に空間内の特定の点をカバーしようとするだけであり、その機能は普遍的ではありません。

もう一つは、テクノロジーに夢中になっている人が多い中、ユーザーのことを大切にしているのですが、テクノロジーを応用する人とテクノロジーを作る人の人物像は全く違うということを忘れていて、ツールを使う開発者の考え方を理解する必要があります。

  • **Modular は、ここ数日で Linux Mojo に基づいてダウンロードして使用できるようにリリースされました。MacOS バージョンと Windows バージョンは間もなくリリースされます。では、今後 6 ~ 9 か月以内に他にどのようなツールキットやコンポーネントが利用可能になるでしょうか? **

**Chris Lattner:**Mojo はまだ若い言語ですが、私たちはエコシステムと協力して徐々に成熟させていきます。私たちは、Mojo の周りに大きなコミュニティを作り、クールなものを一緒に構築したいと考えています。この目標を達成するために、私たちは Mojo を段階的にオープンソースにしていきます。そして、ただ混乱しているだけではなく、うまく機能するエコシステムを構築するために、全員が協力して多くの詳細を解決する必要があります。

誰もが経験した Python 2-3 の惨事と同じように、誰もそれを思い出したくありません* (注: 2 つの構文の 80% 以上に互換性がなく、歴史的な問題により、多くの Linux ディストリビューションは下部の py2 に依存しています。ただし、ユーザーが誤って py3 を使用したため、pip install xxx によってシステムがクラッシュしました)。 *

**Q: Guido (*****注: Python 言語を発明したオランダ人エンジニア **Guido van Rossum) および Python Foundation との関係は何ですか?それらは互いにどのような関係にあるのでしょうか? **

クリス・ラトナー: グイドは Mojo が来ることを知っていました。グイドは私たちのチームと多くの時間を過ごしてくれたので、私たちはとても幸運だと感じています。彼は時々 Discord mojo コミュニティに現れて、私に難しい質問をしてくれます。それは素晴らしいことです。

私たちは、mojo が Python ファミリーのメンバーであると考えています。もちろん、Python ファミリーには、PyPy や Cython などを含む多くのメンバーがいます。私たちは、Python が開発を続け、新しいコンテンツを追加し続けることを願っています。 Mojo も成長を続け、新しいコンテンツを追加しています。

30 年か 40 年前に C 言語が存在し、1983 年に C++ と呼ばれる新しい言語が登場しました。C++ は実際にはクラスを備えた C 言語です (注: 1979 年に、Bjame Sgoustrup は Bell に行きました) Labs は、C をクラスを備えた言語に変換し始めました。1983 年に、この言語は正式に C++) と名付けられました。

当時何が起こったかというと、C と C++ は 2 つの異なるコミュニティとしてスタートしましたが、それらの間では多くの収束、アイデアの共有、交換が行われていました。

もちろん、すべての C 言語機能は最終的に C++ に統合されました。したがって、Mojo と Python でも同じことが起こることを願っています。

起業家精神とエンジニアリングチームビルディングについて

  • **あなたのように、エンジニアとして長く素晴らしいキャリアを積んだ創業者は数多くいます。いきなりCEOです。では、チームを構築し、他の人を指導することについて何を学びましたか?特にエンジニアになってからは、プロダクトリーダーやファイナンスの責任も負わなければいけないと思いますが、どう思いますか? **

**Chris Lattner:**Modular では、共同創設者のティムと私は非常に密接な関係にあり、非常に補完的です。起業するにあたって、話し相手がいることは本当に大切です。私が今経験していることは、Google や Apple のエンジニアリング リーダーとしてこれまで経験したことのないものです。

**この会社を設立したとき、私たちの信念は「痛みを理解する」というものでした。大企業の代表とスタートアップ企業の代表は異なり、実際にスタートアップ企業が設立されたら、私がエンジニアリングリーダーとしてエンジニアリングチームの編成を開始し、ティムは製品とビジネスの責任を負い、大手企業が不在の中での業務を担当していただき、工場の雰囲気の中で様々な企業(お客様)とコミュニケーションを図ります。たとえば、現在の問題点は何ですか? **

現在は何に取り組んでいますか?課題は何ですか?どのように我々は助けることができます?私たちがやっていることについてどう思いますか? Modular として私たちが直面している課題は、構築したいものが実際には非常に難しく、非常に抽象的な技術的問題であるということです。

**これらの困難な問題を解決するには、すべての大手テクノロジー企業から非常に高価な技術専門家を雇う必要があるため、多額の資金を調達し、従業員のモチベーションを高め、賃金を支払い、従業員に快適さを感じさせなければなりません。 **

私たちは顧客と直接向き合っており、AI インテリジェンスの分野では顧客の痛みを目の当たりにしています。多くのものの構築と導入は本当に混乱しており、誰もがあまりにも多くの非効率なものに囚われています。したがって、私たちのビジョンは、これらすべてを Modular で統合することです。

しかし、問題はまたしても、製品を開発する一方で、製品も常に変化しており、時間の経過とともにニーズも変化し続けます。そのため、私たちが協力したチームの結果は、さまざまな特殊なケースに合わせて開発された、さまざまな乱雑なシステムが多数含まれる非常に複雑なレベルになりました。

  • **エンジニアリング リーダーとしての経験: チームの構築とエンジニアの採用に関する豊富な経験。プロジェクト管理に関する経験や提案はありますか? **

クリス・ラトナー: 私の仕事は、チームの勝利を手助けすることです。勝利とは何かを定義し、人々に明確なビジョンと明確な目標を与え、全員の足並みをそろえなければなりません。**非常に優秀なメンバーが多数いる場合、周りの人たち 誰もがヒーローになりたいと思うとき、明確な目標は非常に重要です。位置エネルギーが重なり合うと急速に大きな進歩を遂げますが、逆転すると勢いは相殺されてしまいます。 **

社内では、私は初期インフラストラクチャの構築支援に個人的に関わることが多く、それがどのように機能するかをチームに示すことが重要であり、それが私たちの文化の一部です。私にとってエンジニアリング チームで最も重要なことは実装のスピードです。CI の実行に 24 時間または 3 週間待つと、すべてが遅くなります。

採用するとき、また従業員の育成を続けるときに、その従業員が何が得意なのかも判断したいと思いますよね?本当に優れた、本当に情熱的な人々のチームがあり、彼らが本当にやりたいことと結びつけば、彼らはスーパーパワーを手に入れることができると私は心から信じています。

そのため、多くの場合、私たちは人々が適切な問題を解決していることを確認したいと考えています。このようにして、彼らは成長し、物事を実行し、推進し、独立して決定を下すことができます。しかし、多くの場合、人々は製品に非常に集中しているか、顧客や顧客が直面する問題に焦点を当ててビジネスを行うのが特に得意な人もいます。しかし、チームがなければ製品を解決したり構築したりすることはできません。

**私はティムがとても好きです。なぜなら彼は私があまり得意ではない分野をとても得意にしていて、みんながお互いから学んでいるからです。 **

ChatGPT と人工知能について

ChatGPT の発生は非常に興味深いもので、私たちのように人工知能に長年注目してきた人にとって、ChatGPT は一種のユーザー インターフェイスの革新を意味し、人々に人工知能の威力を実感させます。振り返ってみると、このことが数年間にわたって一般の人々の意識における AI の注目度を高めたと思います。

**人工知能の分野で最も興味深い未解決の謎は何ですか? **

クリス・ラトナー: 人工知能は現在、思春期にあると思います。 AI とは何かについて、さまざまな考えを持っている賢い人がたくさんいますよね?すべてがエンドツーエンドのニューラル ネットワークになり、ソフトウェアは消えるべきだと考える人もいますが、答えるべき質問は、トレーニング アルゴリズムとインテリジェント デザイン アルゴリズムのバランスはどうなっているのか、ということだと思います。個人的には、どちらか一方がすべてではないと思います。猫検出器を構築したい場合は、CNN が確かに良い方法です。ブートローダーまたはオペレーティング システムを作成する場合は、for ループを使用して実装すると問題なく動作します。 **しかし、これらのものは時間の経過とともにどこで段階的に廃止されるのでしょうか?アプリ開発者にこれらのプレゼンテーションについてより一貫した考えを持たせるにはどうすればよいでしょうか? **

**私たちの将来への賭けは、ソフトウェア開発手法としての AI が、最終的には人々がアプリケーションの構築方法を考えるためのツールセットの一部になるだろうと考えています。 iPhone アプリケーションや類似の形式だけでなく、クラウド サービス全体、データ パイプライン、そして最終的にはユーザー製品全体の反復構築も含めて、もちろん私たちはまだ模索の道にいます。 **

*長年にわたり著者をサポートし続けてくれたすべての友人に感謝しますEvolution of Technology Life**、そして ChaosAI にも感謝します**

*Dakai、AsyncGreed、Zhang Bo、Mao Li、Ethan、Mew の専門的な支援に感謝します

参考文献:

1.

※2.参考:チップ業界における知財とは何ですか? -新論語-空は高く雲は暗い Andi863*

3.Chris Lattner のホームページ (nondot.org)

4.nn.function と nn.Module- Liang Yun 1991 Algorithm Food House 2020-07-10 21:47

5. 参考:Jianshu-2018年8月12日-LLVMとは何かを理解するための簡単な説明

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • コメント
  • リポスト
  • 共有
コメント
0/400
コメントなし
  • ピン
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)