thumb_codellama_01

大規模言語モデル「Code Llama」が発表

Metaは2023年8月24日、コードに特化した大規模言語モデル「Code Llama」を発表しました。

Code Llamaは、Llama 2をベースに構築されたもので、プログラミングコードとコードに関する自然言語を生成できる最先端のLLMと述べられています。Llamaは「Large Language Model Meta AI」の略で、ラクダ科のラマと同じです。

【参考】:Meta AI: Introducing Code Llama, a state-of-the-art large language model for coding
【参考】:GitHub: FacebookResearch / codellama
【参考】:Meta AI: Introducing Llama 2

Code Llamaの概要

Code Llamaは、Metaが開発した商用利用可能なLLMで、プログラミングコードとコードに関する自然言語に対して、プロンプトから指示を与えて利用します。月間アクティブユーザーが7億人を超えない範囲では、ライセンス条項にしたがって無料で使うことができます。

Code Llamaには、以下の3つのモデルバリエーションを用意し、多様な用途に対応します。

・Code Llama
 基本となるコード・モデルです。

・Codel Llama - Python
 Pythonに特化したコード・モデルです。

・Code Llama - Instruct
 自然言語の命令を理解するためにチューニングを施したモデルです。

Meta社では、公開されている他のLLMとの比較のためにベンチマークテストを実施しており、「Code Llamaは、コードタスクにおいて他社を上回る結果が得られた」としています。

【参考】:Meta AI: Introducing Code Llama, a state-of-the-art large language model for coding
【参考】:LLAMA 2 COMMUNITY LICENSE AGREEMENT

Code Llamaのメリット

Code Llamaのメリットですが、コード生成にテキストプロンプトを使用することで、開発者はワークフローをより高速かつ効率的に実施することが可能です。コーディングに不慣れな方でも、学習のための参入障壁を低くすることが期待できます。

Metaでは、「Code Llamaが、プログラマーがより堅牢で文書化されたソフトウェアを書くための生産性向上ツールや教育ツールとして利用される可能性を秘めている」と述べています。

【参考】:Meta AI: Introducing Code Llama, a state-of-the-art large language model for coding

Code Llamaの仕組み

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

強化されたコーディング機能を備えており、コードと自然言語のプロンプトの両方から、コードとコードに関する自然言語を生成することができます。

プログラミング言語は、Python、C++、Java、PHP、Typescript(Javascript)、C#、Bashなど、一般的な言語の多くがサポートされます。

【参考】:Meta AI: Introducing Code Llama, a state-of-the-art large language model for coding

Code Llamaのモデルサイズ

Code Llamaでは、それぞれ7B(70億)、13B(130億)、34B(340億)のパラメータを持つ3つのモデルサイズがあります。それぞれ、500B(5,000億)トークンのコードとコード関連データでトレーニングされています。

3つのモデルの違いですが、7Bモデルは1つのGPUで処理できるコンパクトモデルです。34Bモデルは最高の結果を返し、より良いコーディング支援を可能にするパワフルなモデルです。

7Bと13Bモデルはコンパクトな割に高速で、リアルタイムのコード補完のような低レイテンシを必要とするタスクに適しているなど、多様な用途にそれぞれのモデルで対応が可能です。

【参考】:Meta AI: Introducing Code Llama, a state-of-the-art large language model for coding

Code Llamaのモデルバリエーション

Code Llamaでは、合わせて「Code Llama - Python」と「Code Llama - Instruct」のバリエーションもモデルを提供します。

「Code Llama - Python」は、Code LlamaのPython言語に特化したモデルで、100B(1,000億)トークンのPythonコードでチューニングされています。Pythonはコード生成で良く用いられるプログラミング言語であり、有効なソリューションと言えるでしょう。

「Code Llama - Instruct」は、Code Llamaをベースにチューニングしたモデルです。インストラクションのチューニングでは、モデルに対して「自然言語命令」の入力と期待される出力が与えられています。

人間がプロンプトから何を期待しているのかを理解することができるように、自然言語で親切で安全な答えを生成するように調整されています。

【参考】:Meta AI: Introducing Code Llama, a state-of-the-art large language model for coding

Code Llamaのパフォーマンス

Code Llamaのパフォーマンスは、Metaによってベンチマークテストを実施しており、レポートが公開されています。Metaによると、「Code Llamaはオープンソースのコードに特化したLLMよりも優れた性能を発揮し、Llama 2を上回った」と述べています。

レポートは客観的に多くのLLMを比較し、結果を報告しています。

【参考】:Meta AI: Introducing Code Llama, a state-of-the-art large language model for coding
【参考】:Meta AI: Code Llama: Open Foundation Models for Code

Code Llamaの使い方

Code Llamaを使用するには、これまでのLlama 2のようにウェブのチャットサービスを使うほか、ローカルにセットアップして使用します。

ウェブサイトでは、「PERPLEXITY LABS」や「Code Llama Playground」など、Code Llamaを用いた生成AIサービスが公開されています。試してみたい場合は、ウェブサイトを使うと面倒な作業なしに利用することができます。

「PERPLEXITY LABS」のチャットサイトに質問したところ、日本語にも対応できているようです。

【参考】:GitHub: FacebookResearch / codellama
【参考】:PERPLEXITY LABS: LLaMa Chat
【参考】:Code Llama Playground

Code Llamaをローカルマシンで使用する

Code Llamaをローカルマシンで使用するには、Code Llamaのモデルコードなどのダウンロードとセットアップが必要です。Metaの申込みサイトからアクセスリクエストを行い、許可が得られると、ダウンロードURLがメールで送付されます。

7B、13B、34Bの各モデルに応じてモデルのサイズが異なりますので、自身の環境に合わせてモデルを選択します。

セットアップ時には、事前に訓練されたモデルを使って、プロンプトと結果を調整していきます。サンプルファイルのexample\completion.py、example\infilling.py、example\_instructions.pyを確認すると良いでしょう。

【参考】:GitHub: FacebookResearch / codellama
【参考】:Meta AI: Request access to the next version of Llama

Code Llamaを使用する

Code Llamaを使用するには、いくつかの方法があります。Pythonからのアクセスは、「llama-cpp-python」を使用します。ローカルの環境が物足らない場合は、Google ColaboratoryのGPUを使用して実行することもできます。

【参考】:Python Bindings for llama.cpp
【参考】:Google Colaboratory

その他に開発環境やコードインタープリターを使用する方法もあります。VS Codeで使用するには、「Continue」をVisual Studio Marketplaceから入手します。VS Codeの環境に、生成AI機能を組み込むことができます。ターミナルから使用するには、「Open Interpreter」を導入するのが簡単な方法です。

それぞれのツールからCode Llamaを使用するまでの具体的な手順は、以下のリンク先をご確認ください。

【参考】:Continue - Use Code Llama in VS Code
【参考】:Continue: Using Code Llama with Continue
【参考】:Open Interpreter

Code Llamaはコード生成に特化して差別化がされている

Code Llamaは、汎用プログラミングに対応するとともに、Pythonなど生成AIのニーズが高い専用モデルにも対応しています。ベースとなるLlama 2は、マイクロソフトのパートナー向けイベント「Microsoft Inspire」でも連携強化が表明されています。

今後、汎用の生成AIの活用とともに、用途ごとに生成AIのモデルが広がることも予想されます。コーディングに関してはMetaが「Code Llama」で差別化を図っているとみて良いでしょう。