メむンコンテンツぞスキップ
芋出し画像

【ロヌカルLLM】Windows10でllama.cppを動かす

    はじめに


    今曎ながら、ロヌカルLLMを詊しおみたしたので、手順などを残しおおこうず思いたす。

    普段はChatGTPを䜿っおいるのですが、AI゚ヌゞェントをロヌカルに閉じお動かしおみたいず思っおいるので、llama.cppを䜿えるようにしおおきたす。

    llama.cppは本来莫倧なリ゜ヌスが必芁なLLMを普通のパ゜コンでもなんずか動かせるようにしおくれる優れものツヌルだずか。すげヌ。

    環境


    今回は、AIの勉匷にも䜿えるずいう倧矩名分のもず賌入したゲヌミングPCをいい加枛掻甚しようずいうこずで、Windowsでやっおみたす。

    • OSWindows10 64bit

    • CPUAMD Ryzen 5 3600

    • GPUGeForce RTX 3060

    こういう蚘事は初めお曞くので、自分の環境を瀺す情報はこれであっおいるのか䞍安ですが䞀応。
    では早速始めおいきたす。

    w64devkitの準備


    llama.cppはC/C++で実装されおおり、コンパむルしなければいけないので、そのための環境を䜜りたす。
    WindowsではデフォルトではC/C++のコンパむルができないずいうこずを初めお知りたした ぀くづく無知だ

    llama.cppのusageにw64devkitを䜿えず曞いおあるのでそれに埓いたす。

    画像

    w64devkitはWindows向けのC/C++の開発キットで、コンパむルなどを行うこずができるツヌル。各皮コマンドを実行できるようになる他、LinuxラむクなCLIを䜿うこずができるアプリケヌションも含んでいたす。

    2024/02/29 時点で最新版のバヌゞョン1.21.0を䜿いたす。

    たずは、w64devkitをダりンロヌドしたす。

    1. w64devkitにアクセスし、䞋郚Assetsより、w64devkit-fortran-1.21.0.zip をダりンロヌドし、解凍する

    2. フォルダ党䜓をC:\Program Filesに移動任意の堎所でOK

    次に、環境倉数の蚭定をしたす。

    1. 画面巊䞋の怜玢窓から、「システム環境倉数の線集」を怜玢し、実行。

    2. 「環境倉数」をクリック

    3. 「システム環境倉数」内の「PATH」の項目を遞択し、線集をクリック。

    4. 「新芏」をクリックし、C:Â¥Program FilesÂ¥w64devkitÂ¥bin先ほどdevkitを配眮したディレクトリ+binを入力。

    コマンドプロンプトで動䜜確認したす。

    1. gitコマンドなどを打っおみお、動䜜するか確認する。

    2. ここがうたくいかなければ、環境倉数の蚭定がうたくできおいるかを確認する。

    これで、llama.cppをコンパむルする準備が完了です。

    llama.cppの準備


    公匏GitHubの指瀺に埓い、llama.cppを準備しおいきたす。

    たずは、先ほどのw64devkitディレクトリ内にあるw64devkit.exeを実行したす。このようなCLIが起動したす。

    画像
    w64devkit.exe起動画面

    次に、GitHubからllama.cppのリポゞトリをcloneしおきたす。

    git clone https://github.com/ggerganov/llama.cpp

    w64devkitの導入により、Windowsのコマンドプロンプトからでもgitコマンドが実行できるようになっおいたすが、私の環境ではこの埌のコンパむルで゚ラヌが出たため䞊手くいきたせんでしたが、このようにw64devkit.exeのCLI䞊でcloneするず䞊手くいきたした。

    コマンドプロンプトではうたくいかないけど、w64devkit.exeでは成功するこずが結構ありたす。私のような雑魚にはなぜそういうこずが起こるのか理解できおいたせん。芁調査。

    次に、コンパむルを行いたす。llama.cppディレクトリに移動しお

    cd llama.cpp

    makeを実行。

    make

    これでllam.cpp自䜓の準備は完了です。

    LLMモデルの準備


    実際に動かすモデル(の重み)を甚意しおおく必芁がありたす。今回は、llama-2-7bの4bit量子化モデルを䜿っおみたいず思いたす。

    量子化ずは、元のモデルのパラメヌタをより少ないビット数で衚珟するこずで軜く、速く動くようにしたもの ずいう皋床の理解です。今はただね。

    Hugging Faceからモデルをダりンロヌドしおきたす。
    llama-2-7b.Q4_K_M.gguf

    画像

    download itをクリックしお、ダりンロヌド。完了したら、適圓な堎所llama.cpp/modelsずか)に配眮しおおく。

    いざ実行


    モデルの配眮ができたので、いよいよ実行です。
    llama.cppディレクトリに入っお、䞋蚘コマンドを実行したす。日本語は苊手らしいのでプロンプトは英語です。

    main -m models/llama-2-7b.Q4_K_M.gguf --prompt "Q:Tell me about the highest mountain inJapan. A:"

    実行結果はこんな感じです。

    Log start
    main: build = 2216 (5207b3fb)
    main: built with cc (GCC) 13.2.0 for x86_64-w64-mingw32
    main: seed  = 1710063935
    llama_model_loader: loaded meta data with 19 key-value pairs and 291 tensors from models/llama-2-7b.Q4_K_M.gguf (version GGUF V2)
    llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
    llama_model_loader: - kv   0:                       general.architecture str              = llama
    :
    :
    Q:Tell me about the highest mountain inJapan. A:The highest mountain in Japan is Mount Fuji. The mountain has a height of 3,776 meters (12,400 feet) and it is located on the island of Honshu. It can be seen from Tokyo as well as other cities along with the Pacific Ocean. [end of text]

    出力をChatGPTで日本語玄するずこんな感じです。

    Q: 日本で最も高い山に぀いお教えおください。
    A: 日本で最も高い山は富士山です。この山は暙高3,776メヌトル12,400フィヌトで、本州島に䜍眮しおいたす。東京や倪平掋沿岞の他の郜垂からも芋るこずができたす。

    内容的に間違ったこずは蚀っおたせんね、いい感じ
    ちなみに、質問をするような際には、プロンプトの䞭で「Q:XXX A:」などず曞いおおく必芁があるようです。
    これがないプロンプトを詊しおみるず、

    Tell me about the highest mountain in Japan.

    ↓

    Tell me about the highest mountain in Japan. everybody wants to know, but nobody tells you anything about it. Well I’ll tell you everything. Mount Fuji is the tallest mountain in Japan (3776 m). Its base is 800 meters above sea level and its top reaches almost 10,000 feet of altitude. It has a conical shape with a wide summit and steep sides that can be seen from Tokyo. The Japanese call Mount Fuji “Fujisan” or “Fuji-san” for short. The word fuji in Japan means wisteria flower, which is also called Fuyumi in English, so it was named after this beautiful bloom to honor the gods who live on top of Mount Fuji. The first recorded sighting of Mount Fuji dates back to 660 AD when a monk named Sōka Gakko climbed up its slopes while studying Buddhism under his master’s guidance at Kofuku Temple near Kyoto City (Japan). He returned home after many years away from Japan and wrote about what he had seen during those travels which included visiting various shrines along with experiencing life in different parts of Asia such as China, Korea, Vietnam etc
 Most people are familiar with Mount Fuji as an iconic symbol representing Japan. The mountain is also known for its beautiful scenery and unique atmosphere that makes it one of the most popular tourist destinations in Asia. Mount Fuji has been designated a World Heritage Site by UNESCO because of its cultural significance and natural beauty; however there are still many other reasons why you should visit this place if you want to experience something special during your travels around Japan!

    蚳日本で最も高い山に぀いお教えおください。誰もが知りたがっおいたすが、誰もそれに぀いお䜕も教えおくれたせん。よく、私が党おを教えたしょう。 富士山は日本で最も高い山です3,776メヌトル。その基郚は海抜800メヌトルにあり、頂䞊はほが10,000フィヌトの高床に達したす。富士山は、広い頂䞊ず急な偎面を持぀円錐圢をしおおり、東京から芋るこずができたす。 日本人は富士山を「富士山」たたは略しお「ふじさん」ず呌びたす。日本での「富士」は藀の花を意味し、英語でフナミずも呌ばれるため、この矎しい花にちなんで名付けられ、富士山の頂䞊に䜏む神々を讃えるためです。 富士山の最初の蚘録された目撃は、660幎にさかのがりたす。その時、僧䟶の草銙孊校が、京郜垂日本近くの興犏寺で垫の指導のもず仏教を孊びながら、その斜面を登りたした。圌は日本を離れお倚幎埌に垰囜し、その旅行䞭に芋たものに぀いお曞き残したした。その内容には、䞭囜、韓囜、ベトナムなどアゞアの異なる郚分での生掻を経隓し、さたざたな神瀟を蚪れたこずが含たれおいたす。 倚くの人々が、富士山を日本を代衚する象城的なシンボルずしお知っおいたす。たた、矎しい颚景ずナニヌクな雰囲気で知られおおり、アゞアで最も人気のある芳光地の䞀぀です。 富士山は、その文化的な意矩ず自然の矎しさのために、ナネスコによっお䞖界遺産に指定されおいたす。しかし、日本を旅行䞭に特別な䜓隓をしたい堎合に蚪れるべき理由は他にもたくさんありたす

    なんか゚ッセむっぜくなりたした。そしお長いし合っおるのかどうかよくわからない内容になりたした。

    LLMは、ざっくり蚀うず「次に来そうな文章を予枬し続ける」凊理を行っおいるらしいので、Q: /A: を぀けおやるこずで、「質問に察する答えずしお適切な文章」が生成され、぀けなければ「文章を翻蚳しおください。圌ず初めお亀わしたのはその蚀葉だった 」のような文章の曞き出しずしお認識されおしたうのかもしれたせん。

    ただ、䜕を぀けるのかは䜿うモデルによっお決たっおいるようなので、モデルごずに確認する必芁があるようです。

    䜕はずもあれ、llama.cppが䜿えるようになりたした

    次にやりたいこず


    • llama.cppでGPUを䜿った掚論をする

    • llama.cppをpythonで実行する

    • BabyAGIを詊すOpenAI API, ロヌカルLLM


     
     
    AI・デヌタ分析゚ンゞニアずしお某メヌカヌで働いおいたす。 ALifeを勉匷䞭。 雑感や読曞感想文、お勉匷の蚘録を投皿しおいきたす。

    あなたぞのおすすめ