本日、北京大学国家ソフトウェア工学研究センター知識コンピューティング実験室と四川天府銀行AI実験室は、70億のパラメータを持つ大規模コードモデルであるCodeShellを正式にオープンソース化し、同規模の最強のコードベースとした。 同時に、チームはソフトウェア開発コードアシスタントの完全なソリューションをオープンソース化しました。ローカライズされた軽量でインテリジェントなコードアシスタントを誰もが持つ時代が到来しました。 CodeShell コード: https://github.com/WisdomShell/codeshell CodeShell ベースモデル: https://huggingface.co/WisdomShell/CodeShell-7B コードアシスタント VSCode プラグイン: https://github.com/WisdomShell/codeshell-vscode 具体的には、CodeShell-7B は、コンテキスト ウィンドウの長さが 8192 の 5000 億トークンでコールド スタート トレーニングされました。 権威あるコード評価ベンチマーク (HumanEval および MBPP) では、CodeShell は CodeLlama-7B および StarCodeBase-7B を上回り、同じスケールで最高のパフォーマンスを達成しています。 同時に、CodeShell-7B に付属する定量的およびローカル展開ソリューション、および VSCode と JetBrains IDE をサポートするプラグインはすべてオープンソースであり、新世代のインテリジェント コード アシスタント向けに軽量で効率的なフルスタック オープンソース ソリューションを提供します。 CodeShell モデルとプラグインの関連コードは Github で公開されており、Apache 2.0 オープンソース プロトコルに厳密に準拠しています。モデルは HuggingFace プラットフォームで公開されており、商用利用をサポートしています。 CodeShell:最も強力な 7B コードベース モデル CodeShell は効率的なデータ ガバナンス システムを構築しました。5,000 億トークンのコールド スタート事前トレーニングにより、コード生成パフォーマンスは CodeLlama-7B や StarCoder-7B を上回ります。 比較すると、CodeLlama は強力な Llama2 で事前トレーニングを継続し、それでも 5,000 億を超えるトークンを学習しましたが、StarCoder はコールドスタートして 1 兆のトークンをトレーニングしました。これは CodeShell の 2 倍です。 CodeShell のオリジナルのトレーニング データは、Github データ、独自にクロールした Stack および StarCoder データセット、および少量の高品質な中国語と英語のデータに基づいています。 CodeShell は、データ重複検出、データ フィルタリング ルール、データ品質モデルに基づく体系的なデータ ガバナンス パイプラインを設計することで、高品質の事前トレーニング データを構築しました。 CodeShell は、中国語、英語、コードに対してそれぞれ 2.83、3.29、3.21 の圧縮率で 70,000 語の語彙を構築し、中国語、英語、コードのバランスのとれた効率的なエンコードとデコードをサポートしています。 さまざまな小規模なベース アーキテクチャで多数の事前トレーニング実験を行った後、最終的に CodeShell アーキテクチャ設計は StarCoder と Llama の両方のコア機能を組み合わせました。 GPT-2 をベースに、コード固有の補完生成方法をサポートするために fill-in-middle (FIM) モードを採用し、Grouped-Query Attention と ROPE 位置エンコーディングを導入することで、最終的には高性能でコンテキスト ウィンドウを簡単に拡張できる CodeShell の独自のアーキテクチャを形成します。 Codeshell は、分散トレーニングの効率を最大限に高めるために、Megatron-LM をベースに Attention 演算子の最適化、データの前処理、データの読み込み、ログ出力、ステータスの監視、分散トレーニングの管理などを詳細にカスタマイズし、Flash Attention2 アクセラレーションをサポートし、トレーニング スループットは GPU あたり 3,400 トークン/秒という業界トップレベルに達しています。 CodeShell 事前トレーニングのコンテキスト ウィンドウは 8192 です。 CodeShell は 5,000 億トークンでトレーニングした後、2 つの主流の評価データセットである humaneval と mbpp で大きな利点を示しました。 JavaScript、Java、C++ などの他のプログラミング言語での humaneval の評価では、CodeShell が依然としてパフォーマンスでリードしています。 CodeShell のトレーニング中に、チームは、意図的な「ランキング ブラッシング」トレーニングによってコード ベースのスコアが「誤って高くなる」可能性があるが、スコアに一致する可能性は実際のアプリケーションと微調整に反映されないことを発見しました。 CodeShell の事前トレーニングの「純度」を検証するために、チームは WizardCoder の Evol 命令データ構築方法を使用して微調整データを生成し、このデータを使用してそれぞれ CodeShell、CodeLlama、StarCoder を微調整し、WizardCoder が提供する Prompt を使用して統合された HumanEval 評価を行いました。このシナリオでは、CodeShell は依然として優れたパフォーマンスを維持し、CodeShell の真の基本機能を完全に検証します。 CodeShell は、Hggingface の信頼できるコード モデル リストでも非常に優れたパフォーマンスを発揮します。このリストでは、さまざまな最適化されたコード ベースと微調整されたモデルが、HumanEval スコアで CodeLLama を上回ることができますが、総合的な機能を反映する全体的な勝率 (Win Rate) は、依然として CodeLlama に大きく遅れをとっています。 驚くべきことに、CodeShell は HumanEval の 7B モデルで優位に立っているだけでなく、全体的な勝率も CodeLlama-7B と同等です。 CodeLlama-7B によってトレーニングされたトークンの数は 2.5 兆を超えているのに対し、CodeShell の数はわずか 5 分の 1 であることを考慮すると、このリストは CodeShell チームの技術力を十分に反映しています。 開発中のCodeShellの新バージョンは、強力なコード機能をベースに中国語と英語の処理機能がさらに強化され、その総合的な機能にはさらなる期待が寄せられています。 CodeShell-Chat:フル機能のコードアシスタントモデル チームは CodeShell ベースに基づいて、実際のソフトウェア開発シナリオに合わせて効率的に微調整することで、会話、コード生成、コード補完、コード注釈、コードチェック、テストケース生成をサポートする総合的なコードアシスタント モデルである CodeShell-Chat をトレーニングしました。 この目的のために、CodeShell チームは、数万件の高品質なコード対話データとコード補完データを構築し、ルールベースと埋め込みベースの表現を組み合わせた微調整データスクリーニング方法を設計し、マルチタスクの一貫性のある微調整データ形式を構築し、小規模な微調整のためにベースモデルでタスク分類最適化戦略を使用して、最終的に効率的で実用的なコードアシスタントモデルを取得しました。 使用しきい値をさらに下げ、軽量なローカル展開をサポートするために、チームは llama.cpp を CodeShell の独自のアーキテクチャ用に拡張しました。これは、LLaMA モデルの効率的な推論インターフェースの純粋な C/C++ 実装であり、CodeShell のモデル形式の変換、推論操作、およびさまざまなコンピューティング アーキテクチャでの定量的な展開をサポートします。 16G メモリを搭載した Apple ラップトップで推論を実行すると、応答速度は 1 秒あたり 18 トークンに達し、実際のユーザー エクスペリエンスは非常にスムーズです。 飛行機に乗っているプログラマーが、普通の Mac コンピュータを起動し、パフォーマンスの低下がほとんどなく、メモリを 4G しか占有しない 4 ビットの量子化バージョンを使用すると想像してください。ローカル展開により、データのセキュリティが確保されるだけでなく、いつでもどこでも使用できるようになります。 便利で使いやすいCodeShellコードアシスタントプラグイン多くの開発者にとって、強力なコード アシスタント モデルを使用しても、アプリケーションの敷居は依然として高すぎます。 この目的のために、CodeShell チームは IDE プラグインを誠意を持ってオープンソース化しました。 IDE プラグインは現在、VSCode と IntelliJ IDEA をサポートしており、さまざまな主流のプログラミング言語に適しています。 開発プロセス中、CodeShell コード アシスタント プラグインは、フォーカス モードとインタラクティブ モードという 2 つのモードを提供します。この 2 つのモードは連携して、開発効率を向上させます。 フォーカス モードでは、現在のプロジェクト コードが分析され、コード ヒントと補完機能が提供されるため、プログラミングの効率が向上します。 対話モードでは、IDE プラグインは、特定の対話型プロンプトとユーザー入力をコード アシスタント モデルに送信することで、豊富な機能を提供できます。いくつかの例を見てみましょう。 インテリジェントな Q&A:プログラミング プロセス中に他のインターフェイスに切り替えることなくコード アシスタント モデルに直接質問できるため、会話とプログラミング シナリオのシームレスな統合がサポートされます。 コードの説明:自然言語を使用してコードの実行プロセスを説明すると、開発者はコードの構造とロジックをよりよく理解できるようになります。 セキュリティ検出: SQL インジェクション、クロスサイト スクリプティング攻撃などのコード内の潜在的なセキュリティ リスクを検出し、セキュリティ リスクのトラブルシューティングに役立ちます。 その他の機能は次のとおりです: コメントを自動的に追加 -コードの関数、パラメーター、戻り値、その他の関連情報を説明するコメントを自動的に生成します。 コードの最適化と監査 -潜在的なエラー、冗長コード、パフォーマンスのボトルネックを検出するためのコードの詳細な分析を行い、開発者に対応する修復提案を提供します。 コード形式のチェック -コードのレイアウトと形式の問題を自動的に検出し、潜在的な不規則性を見つけます。 パフォーマンス評価 -コードのパフォーマンス リスクを評価し、潜在的なパフォーマンスのボトルネックを特定し、コード パフォーマンスの最適化をサポートします。 テスト ケースの生成 -コード ロジックに基づいてテスト ケースを自動的に作成し、コードの正確性と安定性を確保するためのコード テストと検証を支援します。 開発者はモデルをダウンロードし、簡単な操作と構成をローカルで実行して、すぐに体験することができます。 包括的な自動コーディング評価ツール CodeShell チームは、コード アシスタント機能の統合評価ベンチマークもリリースしました。これは、近い将来にオープン ソース化されて公開され、CodeShell のオープン ソース「ファミリー バケット」に追加される予定です。 CodeShell チームは、大規模モデルの評価において確固たる基盤を持っています。チームは以前、一般的な大規模モデルの対話機能の自動評価ツールである PandaLM をリリースしました。 オープンソースアドレス: https://github.com/WeOpenML/PandaLM モデルのトレーニング中に、CodeShell チームは、既存の評価ベンチマークではモデルの真の機能を正確に反映できないことに気付きました。直面した問題には、テストの難易度が低いこと、評価シナリオと実際の開発環境が分離していること、評価ベンチマークによって提供されるタスク コンテキスト情報が非常に限られているため、大規模なコード モデルの評価者が詳細な分析を行うことが困難であることなどがありました。 この目的のために、CodeShell チームは、完全なプログラム コンテキストを含むマルチタスク プログラミング モデル評価ベンチマーク CodeShell-UCB (Unified Code Bench) を提案しました。 CodeShell-UCB の評価タスクは、完全な実際のプロジェクト コード、実行環境、実行スクリプトを含む完全なプログラム コンテキスト情報を提供します。 CodeShell-UCB は、プログラム分析、ルール スクリーニング、手動スクリーニングを実行してコード アシスタント タスクの質問を抽出し、統合されたコンパイル、実行、テスト環境を提供します。 CodeShell-UCB の 5 つの評価タスクは、ソフトウェア開発の重要なシナリオをカバーします。 1. コード生成:高品質で準拠したコード スニペットを自動的に生成する方法に重点を置きます。 CodeShell-UCB には、235 個の単一関数コード生成の質問が含まれています。 2. テスト対象コードに基づくテストケースの生成:テスト対象の特定のコードに基づいて、効果的で包括的なテストケースを自動的に生成する方法に重点を置きます。 CodeShell-UCB には、テスト対象のコードに基づいた 139 個のテスト ケース生成質問が含まれています。 3. 問題レポートに基づくテストケースの生成:エラーレポートがある場合、対応するテストケースを迅速かつ正確に作成すると、問題を迅速に特定して修正できるだけでなく、回帰テストの効率も向上します。 CodeShell-UCB には、問題レポートに基づいた 58 個のテスト ケース生成質問が含まれています。 4. 欠陥検出:欠陥検出を自動化すると、開発効率が大幅に向上し、人的過失によるエラーが削減されます。 CodeShell-UCB には、ラベルバランスの欠陥検出用の 956 個のテスト サンプルが含まれています。 5. 欠陥の修復:欠陥が検出されると、それを効果的に修復する方法も複雑かつ重要なタスクになります。 CodeShell-UCB には、単機能欠陥コード欠陥修復テストの質問が 478 個含まれています。 これら 5 つのタスクは、包括的かつ詳細な評価スキームを提供し、さまざまなソフトウェア開発シナリオで大規模なコード モデルを検証および評価する機能をサポートします。 同時に、CodeShell-UCB 推論フレームワークは非常に汎用性が高く、ローカル Huggingface モデルの推論、ローカル Text-Generation-Inference の高速推論、クローズドソース API (OpenAI API や Claude API など) を使用した推論をカバーします。 生成されたコードは CodeShell-UCB エグゼキュータで実行および評価され、コンパイル成功率、Pass@K、Pass@T、テスト カバレッジなどの多様で多次元的な評価指標が提供されます。 次の表は、コード アシスタント CodeShell-Chat と WizardCoder の比較を示しています。 WizardCoder は CodeLlama で微調整することで高い HumanEval スコアを達成しましたが、CodeShell-Chat はより包括的なテスト ベンチマークの下でさまざまなコーディング タスクで明らかな利点があり、実際のソフトウェア開発シナリオにより適しています。 CodeShell-UCG 評価ベンチマークは、モデルのプログラミング能力とさまざまなプロンプト設計戦略を評価するために使用できます。研究者は、CodeShell-UCB に基づいてデータとタスクを拡張し、より詳細なモデル分析を行うことができます。 北京大学国家ソフトウェア工学研究センター知識コンピューティング研究室(張世坤と葉偉の研究グループ)は、長い間ソフトウェア工学と人工知能の交差点に関心を持ち、プログラミング言語と自然言語の意味理解と相互作用に焦点を当ててきました。 CodeShellを構築する過程で、大規模なモデルエリートチームを設立し、ベースの事前トレーニング、インフラストラクチャの最適化、データガバナンス、モデルの微調整と調整、モデル評価、モデルの量子化と展開などのコアリンクとタスクをカバーしています。 近い将来、より多くの重量級のモデルと製品がリリースされる予定ですので、お楽しみに! |
>>: 金融業界がビッグモデルの導入を遅らせているのはなぜでしょうか?
前回の記事では、主にテキストコーパスの抽出と前処理のプロセスについて説明しました。次のステップは、コ...
この論文では、ビデオゲームをプレイするためのディープラーニングアルゴリズムをレビューし、さまざまな種...
タンパク質予測モデルAlphaFoldがAIの世界に津波のような波を起こした後、Alphaファミリー...
独自の人工知能システムを構築するにはどうすればよいでしょうか?多くのことと同様に、答えは「それは状況...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
テキスト分析は、顧客が話す言語に関係なく、顧客の意見のあらゆる例を発見して注釈を付けることができる強...
[[428165]]マイマイ人材ビッグデータによると、2021年以降、人工知能業界の人材需要と供給は...
自動化された意思決定ツールは組織内でますます一般的になりつつあります。しかし、顔認識システムからオン...
企業が初めて AI を導入し、機械学習プロジェクトを構築するときは、理論に重点を置くことがよくありま...
マイクロソフトの最近の研究により、ラマ2号は選択的健忘症にかかり、ハリー・ポッターに関するすべてのこ...
[51CTO.com クイック翻訳]デジタル経済が世界を席巻する中、人工知能は今日私たちが知っている...