LASSI: 並列コード翻訳のための新しいツール
LASSIは効率的な科学計算のためにコンピュータプログラムを翻訳するのを手伝うよ。
― 1 分で読む
この記事ではLASSIという新しいツールについて話してるよ。これは並列に動くコンピュータプログラムを翻訳するのを手助けするんだ。こういうプログラムは科学や工学の分野で使われてて、同時にたくさんのタスクをこなして時間とリソースを節約するために使われるんだ。LASSIの主な目標は、大規模言語モデル(LLM)に並列プログラミング言語を理解させて使えるようにするためのトレーニング例をたくさん集めることなんだ。
並列科学コードの必要性
現代の科学では、並列プログラミングを使うことが不可欠なんだ。これにより、研究者は複数のプロセッサを使って大規模なシミュレーションや計算を早く実行できるんだけど、質の高い科学コードの例が不足してるんだ。LASSIは、そのギャップを埋めるために、トレーニング用に何百万ものコードを生成することを目指してるんだ。
LASSIって何?
LASSIは自動自己修正パイプラインの略なんだ。既存のプログラミング言語を使って自動的に切り替えるように設計されてる。これにより、科学者やエンジニアが自分のコードを別の言語に変換するのを手伝うんだ。翻訳プロセスは重要で、異なるプログラミング言語にはそれぞれ強みと弱みがあるからなんだ。
LASSIはコードを生成できる既存のモデルを使ってるし、間違いから学べるスマートなフィードバックシステムも搭載してる。LASSIがコードを生成したとき、ちゃんと動くかテストして、エラーがあればフィードバックに基づいてコードを調整するんだ。こうしてどんどんパフォーマンスを向上させていくんだ。
LASSIの動作方法
LASSIは以下のいくつかのステップで動作するよ:
コード準備:まず、元のコードがちゃんと動くかチェックする。このステップで、翻訳時に比較するための基準ができるんだ。
プロンプトエンジニアリング:LASSIはコード生成モデルを導くための一連の質問や命令を作るよ。これにより、モデルが求められていることをより明確に理解できるようになるんだ。
コード生成:すべての準備が整ったら、LASSIが新しいコードを生成する。元のコードを考慮しつつ、プロンプトを使って新しいバージョンを目標のプログラミング言語で作成するよ。
自己修正:コードが生成されたら、LASSIはエラーをチェックする。エラーが見つかれば、モデルに戻って修正版をリクエストする。このやり取りは、コードが正しく実行されるまで続くんだ。
パフォーマンス比較:最後に、LASSIは新しいコードと元のコードを比較する。結果の類似性を探し、各バージョンが実行されるのにかかる時間を測るんだ。
並列コードの調達の課題
モデルをトレーニングするために十分な並列科学コードを見つけるのは難しいことがあるんだ。科学分野の多くの開発者は、自分のコードを他の分野、例えばウェブ開発の開発者ほどオープンには共有しないんだ。だからLASSIは、広く共有されて使われる自分自身のコードを生成することでこの状況を変えたいと思っているんだ。
コード翻訳の重要性
コードの翻訳はすごく大事で、すべてのプログラミング言語がすべてのタスクに対してうまく機能するわけじゃないからなんだ。たとえば、ある言語は複雑な数学計算に向いているかもしれないし、他の言語はデータ管理が得意だったりするんだ。LASSIを使ってある言語から別の言語にコードを翻訳することで、研究者は異なるプログラミング環境の強みを活かせるんだ。
LASSIの結果
LASSIは既存のベンチマークコードを使ってテストされたんだ。これらのコードはすでに科学的な価値があると認められてるよ。ツールは、並列プログラミングで使われる2つの人気のプログラミング言語、OpenMPとCUDAの間でコードを翻訳することができたんだ。
OpenMPからCUDAへの翻訳:LASSIが作った翻訳の約80%が成功裏に動作し、元のコードに似た結果を出したんだ。さらに、これらの翻訳の約78%は、元のコードと同じかそれよりも早く実行されたよ。
CUDAからOpenMPへの翻訳:逆の方向の翻訳では、85%が期待通りに動いたよ。61%以上が元のコードと同じかそれ以上の時間で完了したんだ。
これらの結果から、LASSIは並列科学コードを生成して翻訳するのに効果的だってわかるよ。
フィードバックと学習
LASSIの特徴の一つは、間違いから学べる能力なんだ。コード生成や実行中にエラーに遭遇すると、その情報をキャッチして将来の試みを改善するために使うんだ。これが、高品質のコードを生成するために重要な点で、LASSIが時間と共に賢くなるってことなんだ。
今後の方向性
LASSIにはまだまだやるべきことがいっぱいあるんだ。今後の改善には、生成されたコードの正確さを自動的に確認する機能を加えることが考えられてるよ。これにより、LASSIはコードを翻訳するだけじゃなく、結果が正確で信頼できるかどうかも確認できるようになるんだ。
結論
LASSIは科学プログラミングの分野で大きな一歩を示してるよ。並列コードの生成と翻訳を自動化することで、研究者やエンジニアに貴重なサポートを提供してる。エラーから学んで継続的に改善できる能力があるから、科学計算における生産性や効率性を高めるための強力なツールなんだ。
今後の開発で、LASSIはさらにコード生成や翻訳の進展を促し、広範な科学分野に恩恵をもたらす可能性があるよ。高品質の並列科学コードを生成する潜在能力は、研究者がプログラミングの課題に悩まされずに実験や革新に集中できる新しい道を開いてくれるんだ。
タイトル: LASSI: An LLM-based Automated Self-Correcting Pipeline for Translating Parallel Scientific Codes
概要: This paper addresses the problem of providing a novel approach to sourcing significant training data for LLMs focused on science and engineering. In particular, a crucial challenge is sourcing parallel scientific codes in the ranges of millions to billions of codes. To tackle this problem, we propose an automated pipeline framework, called LASSI, designed to translate between parallel programming languages by bootstrapping existing closed- or open-source LLMs. LASSI incorporates autonomous enhancement through self-correcting loops where errors encountered during compilation and execution of generated code are fed back to the LLM through guided prompting for debugging and refactoring. We highlight the bi-directional translation of existing GPU benchmarks between OpenMP target offload and CUDA to validate LASSI. The results of evaluating LASSI with different application codes across four LLMs demonstrate the effectiveness of LASSI for generating executable parallel codes, with 80% of OpenMP to CUDA translations and 85% of CUDA to OpenMP translations producing the expected output. We also observe approximately 78% of OpenMP to CUDA translations and 62% of CUDA to OpenMP translations execute within 10% of or at a faster runtime than the original benchmark code in the same language.
著者: Matthew T. Dearing, Yiheng Tao, Xingfu Wu, Zhiling Lan, Valerie Taylor
最終更新: 2024-06-30 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2407.01638
ソースPDF: https://arxiv.org/pdf/2407.01638
ライセンス: https://creativecommons.org/licenses/by-nc-sa/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。
参照リンク
- https://tpc.dev
- https://arxiv.org/abs/2303.08774
- https://mistral.ai/news/codestral/
- https://arxiv.org/abs/2305.18703
- https://arxiv.org/abs/2401.12554
- https://arxiv.org/abs/2310.03714
- https://ai.meta.com/blog/meta-llama-3/
- https://mistral.ai/news/mixtral-8x22b
- https://qwenlm.github.io/blog/qwen2
- https://www.hpcwire.com/2023/11/13/training-of-1-trillion-parameter-scientific-ai-begins/
- https://arxiv.org/abs/2402.10949
- https://www.openmp.org/resources/refguides/
- https://docs.nvidia.com/cuda/pdf/CUDA
- https://en.wikipedia.org/wiki/GPT-4
- https://en.wikipedia.org/wiki/Half-precision
- https://github.com/ollama/ollama
- https://www.nist.gov/dads/HTML/ratcliffObershelp.html