Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# ソフトウェア工学# 人工知能# 分散・並列・クラスターコンピューティング# プログラミング言語

高性能コンピューティングのコード生成のためのAIモデルの評価

この記事では、HPCコード生成におけるLlama-2とGPT-3を比較してるよ。

― 1 分で読む


HPCのコード生成におけるHPCのコード生成におけるAIなHPCコーディングの比較。Llama-2とGPT-3を使った効果的
目次

最近の人工知能(AI)の進展で、高性能コンピューティング(HPC)のためのコードを生成できる大型言語モデル(LLM)が開発されたんだ。この記事では、人気のある2つのモデル、Llama-2とGPT-3を見て、それらが効果的なHPCコードを作る能力を評価するよ。HPCはスーパーコンピュータで複雑な計算を効率的に実行することに関わっていて、異なるマシンに合ったコードを作るのがめちゃくちゃ重要なんだ。

Llama-2とGPT-3って何?

Llama-2とGPT-3は、人間のようなテキストを理解し生成するために設計されたAIモデルだよ。いろんなプログラミング言語のプロンプトを受け取って、それに基づいてコードスニペットを生成できるんだ。GPT-3はOpenAIが開発した古いモデルで、Llama-2はMeta AIが開発した新しいモデルなんだ。

HPCでのAIの必要性

HPCの分野は常に進化していて、研究者たちは異なるハードウェアやプログラミング言語のためにコードを書いたり最適化したりする必要があるよ。高品質なコードを作るのにはかなりの時間と労力がかかる。LLMは異なるHPCシステムの要件を満たすコードを生成することで、このプロセスを加速する可能性があるんだ。

評価の焦点

この評価は主に2つの点に絞ってる:Llama-2とGPT-3が基本的な数値演算のためにどれだけコードを生産できるか、そしてそのコードがどれだけ正確で最適化されているか。研究では、コンピューティングでよく使われる3つの操作、AXPY、GEMV、GEMMを特に見てる。これらの操作はモデルのパフォーマンスを測る基準となるんだ。

AXPY、GEMV、GEMMの理解

AXPYはスカラーをベクトルに掛けて別のベクトルに加える簡単な操作だよ。GEMVは行列とベクトルの掛け算で、行列をベクトルに掛けるんだ。GEMMは行列同士の掛け算を指すよ。これらの操作は科学的アプリケーションの多くの計算の基盤となってるんだ。

テストの方法

2つのモデルを評価するために、C++、Fortran、Python、Juliaを含むいくつかのプログラミング言語でコードが生成されたよ。各言語にはOpenMPやCUDAなど、並列コードを書くための独自のプログラミングフレームワークがある。このテストの目的は、Llama-2とGPT-3がこれらのプログラミング言語とモデルの中でどのようにコードを生成できるかを見ることだったんだ。

テストでは、両方のモデルに与えられたプロンプトに基づいて144のコードスニペットが生成された。その後、生成されたコードの正確性と効率性がチェックされたよ。

C++の結果

Llama-2とGPT-3がC++コードを生成したときのパフォーマンスには興味深い違いがあった。Llama-2は高品質なOpenMPコードを生成したんだけど、CUDAとOpenMPを混同しがちでオフロードコードで苦戦してた。一方で、GPT-3はほとんどの標準操作に対して少なくとも1つの正しいコードを生成できたので、全体的により信頼性があったよ。

Fortranの結果

Fortranは古いプログラミング言語だけど、今でもHPCでは広く使われているよ。Fortranコードを生成するという課題のもと、Llama-2は特にAXPY操作で好成績を収めた。Llama-2が生成したコードはすべて正しく、OpenMPのデコレーターを効率的に利用してたんだけど、OpenACCのコード生成ではあまり良くなかったな。

Juliaの結果

Juliaはプログラミングコミュニティで特に科学計算において注目を集めてるよ。この研究では、Llama-2が行列操作のために正しいコードを1つしか生成できなかった。大半のAXPYコードは間違ってた。GPT-3は、いくつかの例外を除いて、すべてのテストケースの正しいコードを生成できたよ。

Pythonの結果

Pythonは今日最も広く使われているプログラミング言語の1つだよ。選ばれた操作に対するLlama-2のパフォーマンスはまちまちだった。AXPYコードは間違ってたけど、行列操作ではかなり良くて、強力なメモリ管理を示す最適化されたコードを生成してた。GPT-3も信頼性のある結果を出してたけど、しばしば最適化は少なかったよ。

最適化とエラー

Llama-2とGPT-3の両方には限界があった。Llama-2は最適化されたコードを生成する傾向があったけど、時には間違ったコードも作ってた。たとえば、メモリ管理、命名規則、デコレーターの不適切な使用にエラーがあった。でも、GPT-3は一般的に正しいコードを生成してたけど、いくつかの最適化が欠けてた。

比較のまとめ

まとめると、Llama-2とGPT-3にはそれぞれ強みと弱みがある。Llama-2はより最適化されたコードを生成する傾向があるけど、信頼性を犠牲にすることもある。GPT-3は一般的には信頼性があるけど、必ずしも最も効率的なコードを生成するわけではない。結果から見ると、いくつかの操作やプログラミング言語においては、一方のモデルがもう一方よりも性能が良いことがあるんだ。

結論

AI技術が進化するにつれて、高品質なHPCコードを自動生成する能力はおそらく向上するだろう。この研究は、Llama-2やGPT-3のようなLLMがプログラマーを助ける可能性を示しているけど、注意が必要だとも指摘してる。どのモデルを採用するかは、信頼性や最適化の優先度など、特定のニーズによって決まるだろう。

ソフトウェア開発におけるAIの未来は有望で、継続的な研究がこれらのモデルを洗練させて、HPCコミュニティのニーズにより良く応えられるようにするだろうね。

オリジナルソース

タイトル: Comparing Llama-2 and GPT-3 LLMs for HPC kernels generation

概要: We evaluate the use of the open-source Llama-2 model for generating well-known, high-performance computing kernels (e.g., AXPY, GEMV, GEMM) on different parallel programming models and languages (e.g., C++: OpenMP, OpenMP Offload, OpenACC, CUDA, HIP; Fortran: OpenMP, OpenMP Offload, OpenACC; Python: numpy, Numba, pyCUDA, cuPy; and Julia: Threads, CUDA.jl, AMDGPU.jl). We built upon our previous work that is based on the OpenAI Codex, which is a descendant of GPT-3, to generate similar kernels with simple prompts via GitHub Copilot. Our goal is to compare the accuracy of Llama-2 and our original GPT-3 baseline by using a similar metric. Llama-2 has a simplified model that shows competitive or even superior accuracy. We also report on the differences between these foundational large language models as generative AI continues to redefine human-computer interactions. Overall, Copilot generates codes that are more reliable but less optimized, whereas codes generated by Llama-2 are less reliable but more optimized when correct.

著者: Pedro Valero-Lara, Alexis Huante, Mustafa Al Lail, William F. Godoy, Keita Teranishi, Prasanna Balaprakash, Jeffrey S. Vetter

最終更新: 2023-09-11 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2309.07103

ソースPDF: https://arxiv.org/pdf/2309.07103

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事