Meta コーディング特化の最先端大規模言語モデル「Code Llama」を発表

2023年8月24日、Meta社は最先端の大規模言語モデル(LLM)であるCode Llamaを発表しました。

Code Llamaは、コードと自然言語プロンプトから、コードとコードに関する自然言語を生成する能力を持つ最先端のLLM(大規模言語モデル)であり、研究および商用利用は無料で提供されます。

引用:Meta AI

Code Llamaの概要

Code Llamaは、Llama 2をコーディングに特化したデータセットで訓練し、同じデータセットからより多くのデータを長くサンプリングすることで作成されました。

関連記事

Metaが新たなオープンソース言語モデル「Llama 2」の提供を始めました。このモデルは商用利用も視野に入れた形で、無償で提供されます。 参考:Meta 「Llama 2」の特徴と性能 元々研究者を対象として今[…]

Code Llamaは、コードと自然言語のプロンプトから、コードと関連する自然言語を生成することができ、Python、C++、Java、PHP、Typescript(Javascript)、C#、Bashなど、現在一般的に使用されている多くの言語をサポートしています。

Code Llamaの特徴

3種類のモデル

Code Llamaは、異なる3種類のモデルで提供されており、目的に合わせて使用することができます。

1つ目は、基本的なコードモデルであるCode Llamaで、コーディングの一般的なタスクに使用されます。

2つ目は、Pythonに特化したモデルであるCodel Llama – Pythonです。PythonはAIの機械学習などに使われるため、幅広い活用が期待されます。

3つ目は、自然言語指示の理解に微調整されたCode Llama – Instructです。このモデルは、人間がプロンプトから期待する出力をより正確に理解するために設計されています。

引用:Meta AI

技術的な特徴

Code Llamaには、3つのサイズ(7B、13B、34Bのパラメータ)があり、それぞれ異なるサービングとレイテンシ要件に対応しています。

例えば、7Bモデルは単一のGPUで提供することができますが、34Bモデルはより良いコーディング支援を提供します。

また、最大100,000トークンのコンテキストで安定した生成が可能で、多くの人気のあるプログラミング言語をサポートしています。

これにより、コード補完やデバッグなどのタスクを効率的に行うことができます。

高い性能

Code Llamaの性能は、2つの人気のあるコーディングベンチマーク、HumanEvalとMostly Basic Python Programming(MBPP)でテストされました。

このテストでは、他の最先端のオープンソリューションと比較して最高のスコアを記録しました。特に、Code Llama 34Bは、HumanEvalで53.7%、MBPPで56.2%のスコアを記録しています。

これは、他の最先端のオープンソリューションと比較して最高であり、ChatGPTと同等でした。この結果は、Code Llamaがコード生成の最先端のモデルであることを強く示しています。

引用:Meta AI

Metaは「責任ある使用」のためのガイドを作成

MetaはCode Llamaを使用するにあたって、開発者が、ライセンスと使用許諾ポリシーに従って、適切かつ責任を持って使用するためのガイドを作成しています。

参考:Meta AI

特に、マルウェアやウイルス、悪意のあるコードなどのリスクに対して、自動および人間による評価のための安全性データセットを活用することが推奨されています。

さらに、敵対的なプロンプト(プロンプトインジェクション)に対してレッドチーム(セキュリティの弱点を見つけるために攻撃者の立場でテストを行う専門のチームを組むことも推奨されています。

プロンプトインジェクションとは、AIシステムに対して意図的に特殊な質問や命令を送ることで、開発者が意図しない結果を引き起こしたり、機密情報や公開すべきでないデータを取り出す手法のことです。

プロンプトインジェクションについては以前PROMPTY内で取り上げた記事があるので、参考にしてください。

関連記事

「プロンプトインジェクションって何?」「プロンプトインジェクションを防ぐ方法は?」 このような疑問をお持ちの方は多いのではないでしょうか。 プロンプトインジェクションの仕組みや、具体的にどのようなプロンプトインジェクションがあ[…]

まとめ

Code Llamaの登場は、プログラミングの効率化と教育の支援、産業界のイノベーション促進など、多岐にわたる分野での影響が期待されます。

開発者の作業効率向上やプログラミング教育の普及、さらには新しい産業界の取り組みなど、社会全体の発展に寄与する可能性があります。

ただし、その利用には責任と倫理的な配慮が必要とされます。