The Stack とは?
オープンなコード LLM 用の学習データセット。
コード LLM は様々存在しており、有料 API で提供しているものも数多く存在していますが、そのような LLM はどのようなデータで学習をしているかを公開していません。
データが不透明であることはいくつかの問題があります。
- 著作権・ライセンス
- 悪意あるコードが出力される可能性はないか(そのようなデータで学習していないか)
- 自分のコードが勝手に利用されていないか
- 個人情報が含まれていないか
The Stack は透明性があり、かつ、上記のようなデータは含まない構成になっています。
データセット詳細
The Stack は以下の手順で作成されます。
-
データのダウンロード:2015 年 1 月 1 日から 2022 年 3 月 31 日までの間に GHArchive から 2 億 2092 万のユニークなリポジトリ名を収集し、そのうちダウンロードに成功した 1 億 3736 万のリポジトリから「バイナリファイル」や「1MB を超えるファイル」、「非承認のプログラミング言語の拡張子を持つファイル」、「git ハッシュを使用して重複したが確認できるファイル」を除外する。このときのファイルサイズは、非圧縮サイズで 92.36TB です
-
ライセンス検出:GHArchive から 2640 万のリポジトリのライセンス情報が利用可能。残りの 1109 万については go-license-detector を用いてライセンス情報を検出。ただし、リポジトリの 80 %以上でライセンスを検出できていない。MITとApache 2.0が最も頻繁に検出されたライセンス
-
許可ライセンスデータセットの作成: 許可ライセンスのみを含むソースコードのデータセットを開発。GPL は除外。これは「機械学習モデルと推測されたアウトプットが彼らのライセンスの条件を違反しているという懸念を強く表明している」ため
-
曖昧な重複除去:正確な重複除去だけでなく、曖昧な重複も行う。重複除去は MinHash を計算して重複を見つける。結果として、ファイルの 38.6 %が他のファイルの重複として除外された
下の図が視覚的でわかりやすいですね。