はじめに
生成AI はコード生成の完全自動化目前ですが、まだそのマイルストーンには達していません。しかし、次に優れたツールが Code Llama です!2023年にリリースされた Meta の最新コード生成ツール Code Llama は、コーダーが様々なプログラミングタスクを支援するために設計されています。Code Llama は、開発者のワークフロー向上、コードの生成と補完、テスト支援に焦点を当てています。まずは Code Llama を単体の資産として探り、その後、コーディング特化型の他の生成AIツールと比較してみましょう。
Code Llama の仕組み
Code Llama は Llama 2 のコード特化バリアントであり、Llama 2 をコード固有のデータセットでさらにトレーニングし、これらのデータセットから長時間にわたってより多くのデータをサンプリングすることで開発されました。このプロセスにより、Code Llama は Llama 2 の基盤の上にコード生成能力が強化されています。コードや自然言語のプロンプト(例:「フィボナッチ数列を出力する関数を書いてください」)から、コードとコードの自然言語説明の両方を生成できます。また、コード補完やデバッグにも使用できます。Code Llama は、Python、C++、Java、PHP、TypeScript (JavaScript)、C#、Bash など、多くの人気プログラミング言語をサポートしています。
出典:Meta AI
Meta は 4 つのサイズの Code Llama をリリースしており、それぞれ 7B、13B、34B、70B のパラメータを持つモデルを提供しています。これらのモデルは、70B バージョンを除き、500B トークンのコードおよびコード関連データでトレーニングされており、70B モデルは 1T トークンでトレーニングされています。7B と 13B のベースモデルとインストラクトモデルには、FIM(fill-in-the-middle)機能も含まれており、既存のコードにコードを挿入し、コード補完などのタスクをすぐにサポートできます。
これらのモデルは、異なるサーバー負荷とレイテンシ要件に対応します。例えば 7B モデルは単一の GPU でサーブできます。34B と 70B モデルは最良の結果を提供し、優れたコード支援を実現しますが、より小規模な 7B と 13B モデルは高速で、リアルタイムのコード補完など低レイテンシが求められるタスクに適しています。
Code Llama の機能
Code Llama モデルは、最大 100,000 トークンのコンテキストで安定した生成を提供します。すべてのモデルは 16,000 トークンのシーケンスでトレーニングされ、最大 100,000 トークンの入力で改善を示します。
この長い入力シーケンスを処理する能力により、より長いプログラムの生成が容易になるだけでなく、コード言語モデル(LLM)の新しいユースケースが開かれます。例えば、ユーザーはコードベースからより多くのコンテキストをモデルに提供でき、生成されるコードがより関連性の高いものになります。また、大規模なコードベースでのデバッグシナリオでも有益であり、開発者が特定の問題に関連するすべてのコードを追跡するのが難しい場合、コード全体を入力することで、広範なコードセクションのデバッグを支援できます。
さらに、Meta は Code Llama の 2 つの追加バリエーション、Code Llama — Python と Code Llama — Instruct をさらにファインチューニングしました。
Code Llama — Python は言語特化バージョンで、Python コードの 100B トークンでさらにファインチューニングされています。Python はコード生成で最もベンチマークされている言語であり、PyTorch とともに AI コミュニティで重要な役割を果たしているため、この特化モデルは追加の有用性を提供します。
Code Llama — Instruct は、命令ファインチューニングおよび調整されたバリエーションです。命令チューニングでは、モデルに「自然言語の指示」入力と期待される出力が与えられる別の目的でトレーニングが継続されます。これにより、プロンプトから人間の期待を理解する能力が向上します。コード生成には Code Llama — Instruct バリアントを使用することを推奨します。これらのバリアントは、自然言語で有益かつ安全な回答を生成するようにファインチューニングされています。
一般的な自然言語タスクに Code Llama や Code Llama — Python を使用することは推奨されません。これらのモデルは自然言語の指示に従うようには設計されていません。NLP タスクを実行したい場合は、Llama2 または Llama3 モデル を選択できます。これらには、novita.ai LLM API と統合することでアクセスできます。

最も安価な料金とスケーラブルなモデルで、Novita AI LLM Inference API はあなたの LLM に信じられないほどの安定性と 2 秒未満の低レイテンシを提供します。Novita AI LLM 推論 API により、LLM のパフォーマンスが大幅に向上します。
Code Llama はコード固有のタスクに特化しており、他のアプリケーションの基盤モデルとしては適していません。
Code Llama モデルのユーザーは、Meta のライセンスおよび許容使用ポリシーに従う必要があります。
Code Llama のパフォーマンス評価
Code Llama のパフォーマンスを既存のソリューションと比較するため、Meta は 2 つの人気コーディングベンチマーク、HumanEval と MBPP(Mostly Basic Python Programming)を使用しました。HumanEval はドキュメンテーション文字列に基づくコード補完のモデル能力を評価し、MBPP は説明に基づくコード記述のモデル能力をテストします。
ベンチマークテストの結果、Code Llama は他のオープンソースのコード特化言語モデルを上回り、Llama 2 のパフォーマンスを超えました。例えば、Code Llama 34B は HumanEval で 53.7%、MBPP で 56.2%のスコアを達成し、最先端のオープンソリューションの中で最も高く、ChatGPT に匹敵します。
他の最先端技術と同様に、Code Llama には特定のリスクが伴います。責任ある AI モデルの構築は重要であるため、Code Llama をリリースする前に多くの安全対策が実施されました。レッドチーミングの一環として、Code Llama が悪意のあるコードを生成するリスクを評価するための定量的評価が実施されました。明確な意図を持った悪意のあるコードを要求するプロンプトが使用され、Code Llama の応答が ChatGPT(GPT-3.5 Turbo)と比較されました。結果は、Code Llama がより安全な応答を提供することを示しました。
Code Llama の使用方法
Code Llama はウェブサイトやプラットフォームから直接アクセスすることはできません。代わりに、GitHub で入手可能で、ローカルで使用するためにダウンロードできます。Code Llama にアクセスする方法をいくつか紹介します。
-
チャットボット統合: ChatGPT に類似したテキストベース AI の Perplexity-AI は、Code Llama の 34B パラメータバージョンを統合しています。これにより、テキストベースのプロンプトを通じてコードを生成できます。Perplexity-AI は、Python、Java、C++、JavaScript などの特定のプログラミング言語に焦点を当てた複数のバリアントを提供しています。
-
モデル統合: オープンソースプラットフォーム Hugging Face は、コードを簡単に生成するために使用できるデフォルトモデルを提供しています。
-
統合開発環境 (IDE): Ollama は Code Llama のライブラリであり、ダウンロードして IDE に直接統合できます。これにより、ユーザーはローカルで大規模言語モデルを利用できます。
このチュートリアルでは、Perplexity AI を使用して Code Llama の機能を紹介します。まず、ソート関数を定義および作成します。最初に、バイナリソート関数を作成します。これは挿入ソートに似ていますが、要素の位置を決定するためにバイナリ検索を使用します。次に、バイナリソートに匹敵する他のアルゴリズムがあるか Perplexity に問い合わせます。最後に、それらの関数の一部を含む Sorting クラスを生成するよう Perplexity に依頼します。
プロンプト:
I have a Python class that would benefit from a binary sorting algorithm. Could you please create a Python class that takes in a list of values, sorts them using binary sort, and returns the sorted list.
応答:

プロンプト:
Is there another algorithm comparable or better than binary sort?
応答:

プロンプト:
I'd actually like to have sorting options for my needs. Can you create a Sorting class with binary sort, quick sort, and merge sort functionality?
応答:



Code Llama の恩恵を受けるのは誰か
プログラマーはすでに大規模言語モデル(LLM)を使用して、新しいソフトウェアの作成から既存のコードのデバッグまで、さまざまなタスクを支援しています。目標は開発者のワークフローを向上させ、反復的なタスクではなく、仕事のより人間中心の側面に集中できるようにすることです。
Meta は、AI モデル、特にコーディング用の LLM は、オープンなアプローチから大きな恩恵を受け、革新と安全性の両方を促進すると考えています。公開されており、コードに特化したモデルは、人々の生活を向上させる新しい技術の開発を促進できます。Code Llama のようなモデルをリリースすることで、コミュニティ全体がその能力を評価し、問題を特定し、脆弱性に対処できます。
Code Llama の責任ある使用
Meta の研究論文では、Code Llama の開発、実施されたベンチマークテスト、モデルの限界、直面した課題、および取られた緩和策と将来の課題について詳細な情報が提供されています。
さらに、責任ある使用ガイドは、下流モデルを責任を持って開発するためのガイダンスを含むように更新され、以下の側面をカバーしています。
- コンテンツポリシーと緩和策の定義
- データの準備
- モデルのファインチューニング
- パフォーマンスの評価と改善
- 入力および出力レベルのリスクへの対応
- ユーザーインタラクションにおける透明性と報告メカニズムの構築
開発者は、コード固有の評価ベンチマークを使用してモデルを評価し、マルウェア、コンピュータウイルス、悪意のあるコードの生成など、コード固有のユースケースで安全性調査を実施するよう推奨されています。また、自動および人間による評価のために安全データセットを使用し、敵対的プロンプトを用いたレッドチーミングを実施することも推奨されています。
コーディングのための生成AIの未来
Code Llama は、研究、産業、オープンソースプロジェクト、NGO、企業など、あらゆる分野のソフトウェアエンジニアを支援するために設計されています。しかし、現在のベースモデルやインストラクトモデルがサポートできる以上のユースケースがまだ多数存在します。
Code Llama が、Llama 2 を活用して研究や商用製品のための新しい革新的なツールを生み出すよう、他の人々に刺激を与えることを願っています。
結論
Code Llama は、プログラミングプロジェクトを支援するために設計されたユニークなツールであり、開発者がコード生成からプロジェクトの目的に焦点を移すことを可能にします。コード補完をサポートし、人間が読めるコメントを書き、コードを生成します。
AI プログラミングツールとして、Code Llama はオフライン機能で際立っています。IDE にインポートできるため、インターネット接続が不要です。100GB のデータでトレーニングされており、コード補完と生成に優れています。Code Llama には、7B、13B、34B パラメータバージョンや、-Python、-Instruct のような特化バージョンを含むいくつかのバージョンがあります。ニーズに最適なものを選び、プログラミングの取り組みがうまくいくことを祈っています!
novita.ai は、無限の創造性を実現するワンストッププラットフォームで、100 以上の API にアクセスできます。画像生成、言語処理、音声強調、動画操作に至るまで、従量課金制で安価に利用でき、GPU メンテナンスの手間から解放されながら、独自の製品を構築できます。無料でお試しください。
おすすめ記事
