出典: AGI イノベーション ラボ
画像ソース: Unbounded AI によって生成
Meta は最近、微調整用の Llama 2 に基づく大規模言語モデルである Code Llama をリリースしました。これは、テキスト プロンプトを使用してコードを生成でき、研究および商用利用が可能なオープンソースです。
Code Llama は、コーディング タスク用の最先端のオープン LLM であり、現在の開発者のワークフローをより高速かつ効率的にし、コーディングを学習する人々の参入障壁を下げる可能性があります。 Code Llama は、プログラマーがより堅牢で十分に文書化されたソフトウェアを作成するのに役立つ生産性および教育ツールとして使用できる可能性があります。
今年 7 月、Meta (旧 Facebook) は、無料で商用利用可能なオープンソース モデルである Llama 2 をリリースしました。最新リリースの Code Llama は、コーディングに特化した Llama2 の専用バージョンで、コード固有のデータセットで Llama 2 をさらにトレーニングし、同じデータセットからより多くのデータを長期間サンプリングすることによって作成されます。
全体として、Code Llama には、Llama 2 をベースに構築された強化されたコーディング機能が備わっています。コードおよび自然言語の合図 (例: 「フィボナッチ数列を出力する関数を書いてください」) に基づいて、コードおよびコードに関する自然言語を生成できます。また、コード補完やデバッグにも使用できます。
Code Llama は、Python、C++、Java、PHP、Typeface (Java)、C#、Bash など、現在使用されている最も人気のある言語の多くをサポートしています。
Code Llama には現在、70 億パラメータ、130 億パラメータ、340 億パラメータ の 3 つのパラメータ バージョンがあります。
各バージョンは、500B コード トークンとコード関連データを使用してトレーニングされます。 70 億と 130 億のパラメーター ベースと命令モデルは、中間補完 (FIM) 機能でもトレーニングされており、コードを既存のコードにプラグインできるため、コード補完などのタスクをすぐにサポートできます。箱。
これら 3 つのモデルは、さまざまなサービス要件と遅延要件を満たしています。たとえば、70 億のモデルを 1 つの GPU で実行できます。 340 億モデルは最良の結果を返し、より優れたコーディング支援を提供しますが、より小さい 70 億モデルと 130 億モデルの方が高速で、リアルタイムのコード補完など、低遅延を必要とするタスクに適しています。
Code Llama モデルは、最大 100,000 個のコンテキスト トークンによる安定した生成を提供します。すべてのモデルは 16,000 トークンのシーケンスでトレーニングされ、最大 100,000 トークンの入力で改善が見られます。
より長いプログラムを生成するための前提条件であることに加えて、より長い入力シーケンスを使用すると、Code LLM のエキサイティングな新しい使用例が可能になります。たとえば、ユーザーはコードベースからのより多くのコンテキストをモデルに提供して、世代の関連性を高めることができます。また、開発者にとって特定の問題に関連するすべてのコードを把握することが難しい、大規模なコードベースでのデバッグ シナリオにも役立ちます。開発者が大量のコードのデバッグに直面した場合、コード全体の長さをモデルに渡すことができます。
Meta は、Code Llama の 2 つの追加バージョン、Code Llama - Python と Code Llama - Instruct も微調整しています。
ただし、どちらのモデルも自然言語の命令に従うように設計されていないため、一般的な自然言語タスクに Code Llama または Code Llama - Python を使用することはお勧めできません。 Code Llama はコード固有のタスク用に設計されており、他のタスクの基本モデルとしては適していません。
Human と Mostly Basic Python Programming (MBPP) は、コーディング熟練度を評価するためによく使用される 2 つのベンチマークです。Human は、モデルが docstring からコードを完成させる能力をテストし、MBPP は、モデルが記述からコードを記述する能力をテストします。 これら 2 つのベンチマークに対して Code Llama をテストすると、Code Llama がオープンソースのコード固有の Llama よりも優れており、Llama 2 自体よりも優れていることがわかります。たとえば、Code Llama 34B のスコアは、Human では 53.7%、MBPP では 56.2% で、ChatGPT を上回っていますが、Human では GPT-4 にはまだ劣っています。
チャートソース: メタ
※CodeLlama-34Bの微調整モデルはGPT-4を超えた? *
Code Llama はテストに勝利しませんでしたが、これが Code Llama のすべてではなく、もう 1 つのハイライトは再度の微調整です。ユーザーは、オープンソースの Code Llama を再度微調整して、ニーズを満たす最適なバージョンを構築できます。
Phind は最近、独自のデータセットに基づいて CodeLlama-34B と CodeLlama-34B-Python を微調整しました。その微調整バージョンは Human で 67.6% と 69.5% を達成し、OpenAI が 3 月に発表した GPT-4 の 67% を上回りました。合計。
関連リンク:
まず、この比較では、Perplexity プラットフォームでサポートされている ChatGPT の GPT-3.5 バージョンと Code Llama が使用されました。 8 つの質問をして、2 つが正常にコードを生成するかどうかを比較します。
質問1:
"Python を使用します。2 つの文字列 word1 と word2 が与えられます。word1 から始めて交互に文字を追加して文字列を結合します。一方の文字列が他方の文字列より長い場合は、結合された文字列に追加の文字を追加します。
マージされた文字列を返します。
例 1: • 入力: word1="abc"、word2="pqr" • 出力:「apbqcr」
🟢 ChatGPT: 成功で +1 🔵 フレイムコード:成功+1
質問2:
「Python を使用します。文字列 s が与えられた場合、文字列内のすべての母音を反転してそれを返します。
母音は「a」、「e」、「i」、「o」、「u」で、小文字と大文字の両方で複数回出現する可能性があります。
例 1:
入力: s="こんにちは" 出力:「ホール」
🟢 ChatGPT: 成功で +1 🔵 コードラマ: 失敗 +0
質問 3:
「Python を使用します。整数配列 nums を指定して、ゼロ以外の要素の相対的な順序を維持しながら、すべての 0 を配列の末尾にシフトします。 これは、配列のコピーを作成せずに、その場で行う必要があることに注意してください。
入力: 数値 = [0,1,0,3,12] 出力: [1,3,12,0,0]"
質問 4:
「Python を使用します。長い花壇があり、植えられている区画と植えられていない区画があります。ただし、隣接する区画には花を植えることはできません。 花壇の 0 と 1 の整数配列 (0 は空を意味し、1 は空ではないことを意味します) と整数 n を指定すると、隣接花なしルールに違反せずに花壇に n 個の新しい花を植えることができる場合に true を返します。それ以外の場合は false を返します。
例 1: 入力: 花壇 = [1,0,0,0,1]、n = 1 出力: true 例 2: 入力: 花壇 = [1,0,0,0,1]、n = 2 出力: false
質問 5:
「Python を使用します。入力文字列 s を指定して、単語の順序を逆にします。
単語は、空白以外の文字のシーケンスとして定義されます。 s 内の単語は少なくとも 1 つのスペースで区切られます。
単一のスペースで結合された単語の文字列を逆順に返します。
s には、先頭または末尾のスペース、または 2 つの単語の間に複数のスペースが含まれる場合があることに注意してください。返される文字列には、単語を区切るためのスペースが 1 つだけ含まれている必要があります。余分なスペースは含めないでください。
例 1: 入力: s = "空は青い" 出力: 「空は青い」
質問 6:
「Python を使用します。文字列 s と整数 k を指定すると、s 内の長さ k の部分文字列の母音の最大数を返します。 英語の母音は「a」、「e」、「i」、「o」、「u」です。
例 1: 入力: s = "リートコード"、k = 3 出力: 2 説明: 「lee」、「eet」、および「ode」には 2 つの母音が含まれています。
質問 7:
「Python を使用します。アスタリスク * を含む文字列 s を指定します。
1 回の操作で次のことが可能になります。
s の星を選択してください。
左側にある最も近い非アスタリスク文字を削除し、アスタリスク自体を削除します。
すべての星を削除した後の文字列を返します。
例 1: 入力: s="leet**cod*e" 出力: "lecoe""
質問 8:
「Python を使用します。毎日の気温を表す整数の気温の配列が与えられた場合、答えの配列を返します。 [i] 気温が暖かくなるまで待たなければならない日数です。将来これを行う日がない場合は、答えを保持してください [i] == 0。
例 1: 入力: 温度 = [73,74,75,71,69,72,76,73] 出力: [1,1,4,2,1,1,0,0]"
🟢 チャット GPT: +1 🔵 コードキャメル: +1
最終結果:
🟢 ChatGPT: 8/8 🔵 コードラマ: 5/8
要約すると、Code Llama は実際の使用効果において ChatGPT と比較して明らかな利点を示していませんが、上記のテストを判断の根拠として完全に使用することはできません。さらに、オープンソースの Code Llama は、ChatGPT よりもユーザーがニーズに合わせてカスタマイズしやすいため、より多くの可能性をもたらす可能性があります。
参考文献:
20k 人気度
18k 人気度
32k 人気度
31k 人気度
3k 人気度
113k 人気度
28k 人気度
27k 人気度
7k 人気度
Meta は AI「アーティファクト」を発表しましたが、オープンソースで無料のコード モデル Code Llama は ChatGPT とどう比較しますか?
出典: AGI イノベーション ラボ
Meta は最近、微調整用の Llama 2 に基づく大規模言語モデルである Code Llama をリリースしました。これは、テキスト プロンプトを使用してコードを生成でき、研究および商用利用が可能なオープンソースです。
Code Llama は、コーディング タスク用の最先端のオープン LLM であり、現在の開発者のワークフローをより高速かつ効率的にし、コーディングを学習する人々の参入障壁を下げる可能性があります。 Code Llama は、プログラマーがより堅牢で十分に文書化されたソフトウェアを作成するのに役立つ生産性および教育ツールとして使用できる可能性があります。
Code Llama の仕組み
今年 7 月、Meta (旧 Facebook) は、無料で商用利用可能なオープンソース モデルである Llama 2 をリリースしました。最新リリースの Code Llama は、コーディングに特化した Llama2 の専用バージョンで、コード固有のデータセットで Llama 2 をさらにトレーニングし、同じデータセットからより多くのデータを長期間サンプリングすることによって作成されます。
全体として、Code Llama には、Llama 2 をベースに構築された強化されたコーディング機能が備わっています。コードおよび自然言語の合図 (例: 「フィボナッチ数列を出力する関数を書いてください」) に基づいて、コードおよびコードに関する自然言語を生成できます。また、コード補完やデバッグにも使用できます。
Code Llama は、Python、C++、Java、PHP、Typeface (Java)、C#、Bash など、現在使用されている最も人気のある言語の多くをサポートしています。
Code Llama には現在、70 億パラメータ、130 億パラメータ、340 億パラメータ の 3 つのパラメータ バージョンがあります。
各バージョンは、500B コード トークンとコード関連データを使用してトレーニングされます。 70 億と 130 億のパラメーター ベースと命令モデルは、中間補完 (FIM) 機能でもトレーニングされており、コードを既存のコードにプラグインできるため、コード補完などのタスクをすぐにサポートできます。箱。
これら 3 つのモデルは、さまざまなサービス要件と遅延要件を満たしています。たとえば、70 億のモデルを 1 つの GPU で実行できます。 340 億モデルは最良の結果を返し、より優れたコーディング支援を提供しますが、より小さい 70 億モデルと 130 億モデルの方が高速で、リアルタイムのコード補完など、低遅延を必要とするタスクに適しています。
Code Llama モデルは、最大 100,000 個のコンテキスト トークンによる安定した生成を提供します。すべてのモデルは 16,000 トークンのシーケンスでトレーニングされ、最大 100,000 トークンの入力で改善が見られます。
より長いプログラムを生成するための前提条件であることに加えて、より長い入力シーケンスを使用すると、Code LLM のエキサイティングな新しい使用例が可能になります。たとえば、ユーザーはコードベースからのより多くのコンテキストをモデルに提供して、世代の関連性を高めることができます。また、開発者にとって特定の問題に関連するすべてのコードを把握することが難しい、大規模なコードベースでのデバッグ シナリオにも役立ちます。開発者が大量のコードのデバッグに直面した場合、コード全体の長さをモデルに渡すことができます。
Meta は、Code Llama の 2 つの追加バージョン、Code Llama - Python と Code Llama - Instruct も微調整しています。
ただし、どちらのモデルも自然言語の命令に従うように設計されていないため、一般的な自然言語タスクに Code Llama または Code Llama - Python を使用することはお勧めできません。 Code Llama はコード固有のタスク用に設計されており、他のタスクの基本モデルとしては適していません。
Code Llama はどのように動作しますか?
Human と Mostly Basic Python Programming (MBPP) は、コーディング熟練度を評価するためによく使用される 2 つのベンチマークです。Human は、モデルが docstring からコードを完成させる能力をテストし、MBPP は、モデルが記述からコードを記述する能力をテストします。 これら 2 つのベンチマークに対して Code Llama をテストすると、Code Llama がオープンソースのコード固有の Llama よりも優れており、Llama 2 自体よりも優れていることがわかります。たとえば、Code Llama 34B のスコアは、Human では 53.7%、MBPP では 56.2% で、ChatGPT を上回っていますが、Human では GPT-4 にはまだ劣っています。
※CodeLlama-34Bの微調整モデルはGPT-4を超えた? *
Code Llama はテストに勝利しませんでしたが、これが Code Llama のすべてではなく、もう 1 つのハイライトは再度の微調整です。ユーザーは、オープンソースの Code Llama を再度微調整して、ニーズを満たす最適なバージョンを構築できます。
Phind は最近、独自のデータセットに基づいて CodeLlama-34B と CodeLlama-34B-Python を微調整しました。その微調整バージョンは Human で 67.6% と 69.5% を達成し、OpenAI が 3 月に発表した GPT-4 の 67% を上回りました。合計。
関連リンク:
実際の使用状況の比較 ChatGPT と Code Llama
まず、この比較では、Perplexity プラットフォームでサポートされている ChatGPT の GPT-3.5 バージョンと Code Llama が使用されました。 8 つの質問をして、2 つが正常にコードを生成するかどうかを比較します。
"Python を使用します。2 つの文字列 word1 と word2 が与えられます。word1 から始めて交互に文字を追加して文字列を結合します。一方の文字列が他方の文字列より長い場合は、結合された文字列に追加の文字を追加します。
マージされた文字列を返します。
例 1: • 入力: word1="abc"、word2="pqr" • 出力:「apbqcr」
🟢 ChatGPT: 成功で +1 🔵 フレイムコード:成功+1
「Python を使用します。文字列 s が与えられた場合、文字列内のすべての母音を反転してそれを返します。
母音は「a」、「e」、「i」、「o」、「u」で、小文字と大文字の両方で複数回出現する可能性があります。
例 1:
入力: s="こんにちは" 出力:「ホール」
🟢 ChatGPT: 成功で +1 🔵 コードラマ: 失敗 +0
「Python を使用します。整数配列 nums を指定して、ゼロ以外の要素の相対的な順序を維持しながら、すべての 0 を配列の末尾にシフトします。 これは、配列のコピーを作成せずに、その場で行う必要があることに注意してください。
例 1:
入力: 数値 = [0,1,0,3,12] 出力: [1,3,12,0,0]"
🟢 ChatGPT: 成功で +1 🔵 コードラマ: 失敗 +0
「Python を使用します。長い花壇があり、植えられている区画と植えられていない区画があります。ただし、隣接する区画には花を植えることはできません。 花壇の 0 と 1 の整数配列 (0 は空を意味し、1 は空ではないことを意味します) と整数 n を指定すると、隣接花なしルールに違反せずに花壇に n 個の新しい花を植えることができる場合に true を返します。それ以外の場合は false を返します。
例 1: 入力: 花壇 = [1,0,0,0,1]、n = 1 出力: true 例 2: 入力: 花壇 = [1,0,0,0,1]、n = 2 出力: false
🟢 ChatGPT: 成功で +1 🔵 フレイムコード:成功+1
「Python を使用します。入力文字列 s を指定して、単語の順序を逆にします。
単語は、空白以外の文字のシーケンスとして定義されます。 s 内の単語は少なくとも 1 つのスペースで区切られます。
単一のスペースで結合された単語の文字列を逆順に返します。
s には、先頭または末尾のスペース、または 2 つの単語の間に複数のスペースが含まれる場合があることに注意してください。返される文字列には、単語を区切るためのスペースが 1 つだけ含まれている必要があります。余分なスペースは含めないでください。
例 1: 入力: s = "空は青い" 出力: 「空は青い」
🟢 ChatGPT: 成功で +1 🔵 フレイムコード:成功+1
「Python を使用します。文字列 s と整数 k を指定すると、s 内の長さ k の部分文字列の母音の最大数を返します。 英語の母音は「a」、「e」、「i」、「o」、「u」です。
例 1: 入力: s = "リートコード"、k = 3 出力: 2 説明: 「lee」、「eet」、および「ode」には 2 つの母音が含まれています。
🟢 ChatGPT: 成功で +1 🔵 フレイムコード:成功+1
「Python を使用します。アスタリスク * を含む文字列 s を指定します。
1 回の操作で次のことが可能になります。
s の星を選択してください。
左側にある最も近い非アスタリスク文字を削除し、アスタリスク自体を削除します。
すべての星を削除した後の文字列を返します。
例 1: 入力: s="leet**cod*e" 出力: "lecoe""
🟢 ChatGPT: 成功で +1 🔵 コードラマ: 失敗 +0
「Python を使用します。毎日の気温を表す整数の気温の配列が与えられた場合、答えの配列を返します。 [i] 気温が暖かくなるまで待たなければならない日数です。将来これを行う日がない場合は、答えを保持してください [i] == 0。
例 1: 入力: 温度 = [73,74,75,71,69,72,76,73] 出力: [1,1,4,2,1,1,0,0]"
🟢 チャット GPT: +1 🔵 コードキャメル: +1
🟢 ChatGPT: 8/8 🔵 コードラマ: 5/8
要約すると、Code Llama は実際の使用効果において ChatGPT と比較して明らかな利点を示していませんが、上記のテストを判断の根拠として完全に使用することはできません。さらに、オープンソースの Code Llama は、ChatGPT よりもユーザーがニーズに合わせてカスタマイズしやすいため、より多くの可能性をもたらす可能性があります。
参考文献: