
5,585 文字
今日は3つのオープンソースのコーディングモデルを互いに戦わせて、どれが一番ええんか見てみましょか。インターネット無しでローカルでコーディングしたい時にどれが一番ええか調べてみますわ。
今回テストするんは、Deep Seeker Coder V2 Light、Yoder 9B Chat、そしてQwen 2.5 Coder 7Bの3つです。どれもほぼ同じサイズで、めっちゃ優秀やって言われてまんねん。
これらのモデルにいろんなテストをしていきますが、この動画はDellとNVIDIAのスポンサーでお送りさせていただいてます。数ヶ月前に彼らから超パワフルなPCを送ってもらいましてん。RTX A6000 GPUが2枚入ってて、それぞれ48GBのVRAMがあるDell Precision 5860なんですわ。この機械、めっちゃ強力で、早速使うのが楽しみでしょうがないんです。
面白いことに、この3つのモデルを同時に走らせることができまんねん。96GBのVRAMがあるおかげで、3つのモデルを読み込んでも、まだまだ余裕があるんですわ。
まずはDeep Seeker Coder V2から始めていきましょか。これらのモデルは全部、continue.devなんかと連携して、タブ補完やAIコーディングアシスタントとして使えるんです。完全にローカルで、インターネット不要でっせ。全部LM Studioで動かしてまして、このチャンネルをご覧の方はご存知かと思いますが、私はLM Studioの大ファンなんです。
まずは簡単なものから始めましょか。Pythonでスネークゲームを作ってもらいましょ。他の2つのモデルも同時に読み込んでる状態でも、かなり早いですね。
30トークン/秒くらいで出てきましたわ。このコード、tkinterライブラリを使うことにしたみたいですね。pyGameを使うように頼んでもええかもしれませんが、とりあえずこれで試してみましょか。
cursorに読み込んで実行してみますわ。まぁまぁですね。確かに動きましたが、期待通りには動いてませんな。とりあえず動くものはできたので、次に行きましょか。
次はYoder 9Bを試してみましょ。Yoderは小さめのモデルなんで、かなり早そうですね。最後に見てみましょか。
50トークン/秒で、確かに早かったですわ。Yoderはturtleライブラリを選びましたな。動くかどうか見てみましょ。コピーしてcursorに切り替えて、コードを置き換えて、保存して実行。
おっ、これはええ感じですわ。ちゃんと動いてます。ピクセルの位置が若干ずれてるのが気になりますが、動作はしてますな。終了した時どうなるか見てみましょ。何も起こらんかったですね。戻ってくるかな?戻ってきましたわ。ただ、ゲームオーバーになる条件が無いみたいですね。ちょっとマシになりましたが。
最後にQwen 2.5 Coder 7Bです。70億パラメータのコーディングモデルをローカルで動かせるなんて、すごい時代になりましたわ。これが最初にpyGameを使ったモデルなんで、期待が高まりますな。
おお、70トークン/秒近くで出てきました。素晴らしい。コードをコピーして、cursorに戻って貼り付けて、保存して実行してみましょ。
あかん、pyGameモジュールがないって言われましたわ。まぁそれは大丈夫です。はい、読み込めました。おお、これはええですわ。全部きっちり揃ってますし、「snake game by qwen」って名前つけてくれたのもナイスですね。全部ちゃんと動いてます。終了した時どうなるか見てみましょ。
今んとこ断然これが一番ええですな。蛇が自分自身に当たった時に終わるかどうか確認してみましょ。はい、自分に当たったら確かに終わりましたわ。
Qwenが圧倒的な勝者ですな。面白いことに、Qwenが3つの中で一番小さいモデルなんです。もっとテストを続けていきましょか。次はテトリスを試してみましょ。
Deep Sea Coder V2で「Pythonでテトリスゲームを書いて」っていうプロンプトを試してみます。sys、time、randomを使ってますね、面白い。実際に動くか見てみましょか。
pyGameを呼び出してるように見えますが、上部でインポートしてないんで問題になりそうですが、見てみましょか。
出力が終わったんで、cursorに貼り付けてみましょ。はい、予想通りpyGameの参照がありませんわ。でもこれは簡単に直せますね。ここに追加したら他は全部直るはずです。動くか見てみましょ。
おお、なかなか印象的ですわ。ちょっと遅いですし、ピースも1個しかくれませんでしたが、少なくとも起動はしましたな。そんなに良くはないですが。
次はYoderで、同じプロンプトを試してみましょ。これも またturtleを使ってますね。ここで3つのモデルが全部読み込まれてるのが見えますが、VRAMの使用量は22GBだけです。持ってる容量に比べたらたいしたことないですな。
コードがあんまりないんで、これはうまく動かなさそうな予感がしますが、見てみましょか。
実行してみて…あかんわ。何か起こってはいますが、これは動いてませんな。はい、フリーズしましたわ。これは失敗ですね。
最後にQwenで試してみましょか。またpyGameを使ってますね。Qwenには期待してますわ。
おお、かなりのコード量ですね。動くか見てみましょ。コピーして、cursorに戻って貼り付けて…すぐには問題は見当たりませんが、保存して実行してみましょ。
あかん、だめでしたわ。エラーが出ましたな。エラーを直せるか見てみましょ。
エラーをコードに戻して入れてみたら、convert_shape_format関数にoffsetパラメータが必要やって言うてきましたわ。はい、main関数の修正版をくれましたんで、それを試してみましょ。
mainを探して、コードを置き換えて、保存して実行…まだあかんですな。
この3つのモデルのどれもテトリスは作れませんでしたが、まぁ正直、テトリスが作れるモデルってそんなに多くないですからね。
さて、Code Warsを使って、いくつかのコーディングチャレンジをやってみましょ。最初のは「move 10」というもので、与えられた文字列の各文字をアルファベットで10文字進めるというものです。Zを過ぎたら、また最初のAから始めます。入力は長さ1以上の文字列です。かなり分かりやすいですね。どのモデルが正解できるか見てみましょか。
まずはDeep Sea Coder V2からです。「以下のコードチャレンジを解く関数を書いて」っていうプロンプトを投げてみましょ。
はい、def move_lettersが出てきました。コードがいくつかありますが、動くかもしれませんな。見てみましょ。
コードを貼り付けて、試してみます。テスト結果が…最後にprintする必要はなさそうですね。もう一回試してみましょ。
メソッド名がmove_10じゃないといけないみたいですね。それは言うてくれんかったですが、試してみましょ。
はい、パスしました。これは簡単でしたね。他のも試してみましょ。
次はYoderです。はい、コードが出てきましたんで、コピーして、move_10に変えて試してみて…パスしましたわ。
次はQwen 2.5を試してみましょ。これはうまくいきそうな予感がしますわ。はい、Qwenは断然早いですね。これら全部がローカルで動いてるのがめっちゃ好きですわ。
はい、コピーして、move_10に名前を変えて試してみて…パスです。簡単でしたな。
もっと難しいのを試してみましょか。一番難しいのに飛んでみましょ。1kyu…これがどういう意味か分かりませんが。
これは難しそうですね。説明をコピーして、Deep Sea Coderに戻って貼り付けてみましょ。これはCode Warsウェブサイトの最高難度のテストカテゴリーですわ。見てみましょか。
コードが出てきて、importがありますね。うまくいくといいんですが。コピーして貼り付けて、名前を変更して…他のコードを全部消して試してみましょ。
divisible_by_nが定義されてないって言われましたな。サンプルを消せば…もう一回試してみましょ。
おっ、アンチチート検査…面白いですね。テストはパスしましたが、re、sys、printは使えないみたいです。ライブラリを使わないように言いましょか。
もう一回試してみましょ。今回はライブラリを使わずにです。おお、今回のコードは意外と短いですね。試してみましょ。
アンチチート検査はオッケー。任意の数字で動くはずが…0では動かない、1でも動かない、14でも動かない…これは失敗ですな。166個はパスしましたが、52個失敗しました。これは失敗ですわ。
次を試してみましょ。Yoderです。今回はもう少し詳しい指示を出してみましょ。メソッド名を指定して、外部ライブラリは使わないようにって言ってみます。どうなるか見てみましょ。
複雑すぎて、全ての二進数にマッチする正規表現を作るのは無理やって言うてますね。これはうまくいかなさそうですが。
貼り付けて試してみましょ。117個パス、41個失敗。ちょっとマシになりましたが。
最後のQwenモデルを試してみましょか。はい、Qwen、頑張ってや。
不可能とは言ってこなかったのはええですね。おお、このパターン、すごいですわ。
コードを試してみましょ。120個パス、98個失敗。うーん、どれも全部はパスできませんでしたな。ちょっと難しすぎたかもしれません。
もう一回試してみましょか。今度は3kyuを試してみます。難易度的には半分ちょっと上くらいですわ。「Prime streaming (PG-13)」です。素数を生成し続ける無限ジェネレーターを作るっていう問題です。数秒で100万個の素数を生成できないといけません。
まずはDeep Sea Coderから始めましょ。プロンプトに加えて、外部ライブラリは使わないことと、メソッドの構造も指定して、貼り付けてみましょ。どうなるか見てみましょ。
はい、貼り付けて試してみましょ。時間がかかってますね…6個パスして、その後失敗。タイムアウトしてしまいましたな。残念ながら時間内に終わりませんでした。
次のモデルを試してみましょか。はい、Yoderです。コードをコピーして、こっちに来て貼り付けて試してみましょ。
まぁ、数秒以内に終わらないとタイムアウトしちゃいますからね。たぶんそうなりそうです。もしかしたらPythonじゃ無理なのかもしれません。12秒…だめでしたね。
次はQwen 2.5です。同じことをやってみましょ。さぁ、Qwen、やってみい。
かなりベーシックに見えますね。コードをコピーして貼り付けて試してみましょ。だめですね、これもうまくいかなさそうです。
テストはパスしましたが、タイムアウトしてしまいましたわ。はい、これは3つとも失敗ですね。
最後にもう一つコーディングチャレンジを3つとも試してみましょ。みなさん、これは使えそうですか?もっと実用的なものを試した方がいいですかね?コーディングチャレンジって時々微妙なんですが、試してみましょか。
これは「2つのソート済み配列の中央値」っていう問題です。サイズMとNの2つのソート済み配列nums1とnums2が与えられた時に、2つの配列の中央値を返すっていう問題です。実行時の計算量はO(log(m+n))以下じゃないといけません。試してみましょか。
これら全部をまずコピーして、Deep Sea Coderから始めましょ。
はい、コードが出てきました。使用例もありますが、それは要りませんわ。出力だけあればええです。コードをコピーしましょ。
コードをコピーして、位置を合わせて実行してみましょ。
引数エラーが出ましたな。メソッドがどんな形か指定してなかったんで、もう一回試してみましょ。
はい、コピーして貼り付けて実行してみましょ。おお、できましたわ!
Deep Sea Coderはこれをうまくこなしましたね。次を試してみましょ。
次はYoder 9Bです。どうなるか見てみましょ。
はい、コードが少なめですが、コピーして貼り付けて実行してみましょ。
はい、これもうまくいきました。素晴らしい!3つとも成功するかもしれませんな。
次はQwen 2.5です。どうなるか見てみましょ。Qwen 2.5は断然早くて、今んとこ私のお気に入りですわ。
はい、コードが出てきました。コードを貼り付けて実行してみましょ。
はい、パスしました!3つとも本当にええ感じでしたわ。Qwenが勝者やと思いますね。速度の面でも、スネークゲームを成功させた点でも。
他にどんなテストをしたらええか、みなさんご意見くださいな。コーディングモデルにどんなテストをすればええのか、いつも迷うんですが。
ローカルで動かせるモデルとしては、Qwen 2.5コーディングモデルは素晴らしいですわ。そして、もしVRAMに96GBまでのモデルを読み込めるパワフルなマシンが欲しい場合は、Dell Precision 5860を検討してみてください。2枚のNVIDIA RTX A6000を搭載していて、めっちゃ強力な機械です。
DellとNVIDIAには、このマシンを送ってくれたことに本当に感謝してます。スポンサーになっていただき、ありがとうございます。
動画を楽しんでいただけたなら、いいねとチャンネル登録をよろしくお願いします。また次回お会いしましょ!
コメント