Loading...

2024-05-28(火) 10:00

🗾 Ollamaを使ってLlama3の日本語モデルを動かす

macOSAILlama
Llama3の日本語ファインチューニングされたモデルをOllamaを使ってmacOSで動かすまでの手順を解説します。

目次

前提と注意事項

この記事では以下を前提としています。

  • 検証機は Macbookpro M1 Pro 2021 のメモリ 32GB モデルになります。
  • 検証した macOS のバージョンは Sonoma 14.0
  • Ollama の実行環境は構築済みとします。

この記事のゴール

以下のように日本語で質問して日本語で回答してくれる Llama3 の日本語モデルを Ollama で動かすことをゴールとします。後述しますが、本記事では Lightblue 社のsuzume-llama-3-8B-japaneseというモデルを使用します。

Llama3の日本語モデルを使った質問回答例
>>> こんにちは。
こんにちは。何かお手伝いできることがありますか?
 
>>> 日本の首都はどこですか?
日本の首都は東京です。
 
>>> 夏目漱石を知っていますか?
夏目漱石は日本の作家で、代表作に「坊ちゃん」、「三四郎」などがあります。彼の作品は、20世紀初頭の日本社会や文化を描いたものが多く、特に「坊ちゃん」は日本文学史上重要な作品の一つとして知られています。

macOS で Ollama の環境を構築する手順については、以下にまとめています。必要な方は見てみてください。

🦙 Ollamaを使ってmacOSでLlama3を動かすまでの手順

macOSでOllamaを使ってMeta社が公開しているオープンソースのAIモデルであるLlama3を動かすまでの手順を解説します。

ritaiz.com

使用する日本語モデルについて

本記事では、Lightblue 社が提供している Llama3 の日本語モデルであるsuzume-llama-3-8B-japaneseを使用します。以下の HuggingFace に詳細が記載されています。

lightblue/suzume-llama-3-8B-japanese-gguf

This Suzume 8B, a Japanese finetune of Llama 3.

huggingface.co

日本語対応モデルをダウンロードする

まず、以下のように HuggingFace のリポジトリにアクセスして、Files and versionsタブの中にあるggml-model-Q4_K_M.ggufをダウンロードします。ファイルサイズが 4.92GB ほどあります。

日本語モデルをダウンロードする

ggml-model-Q4_K_M.ggufをダウンロードしたら続いてはModelfileというファイルを作成します。

Modelfile を作成する

次にダウンロードしたggml-model-Q4_K_M.ggufを Ollama で使用するために、Modelfileを作成します。 適当なディレクトリに移動して、その中にダウンロードしたggml-model-Q4_K_M.ggufを移動し、さらに同じディレクトリにModelfileという名前のファイル(拡張子なしで OK です)を作成します。以下はtest-llama3というディレクトリを適当に作成し、その中にModelfileを作成しています。viエディタを使用していますが、VSCode やその他のエディタでももちろん OK です。

Modelfileを作成する
$ mkdir ~/test-llama3
$ cd ~/test-llama3
$ mv ~/Downloads/ggml-model-Q4_K_M.gguf .
$ vi Modelfile

Modelfileの中身を以下のようにします。

~/test-llama3/Modelfile
# 使用するモデルの指定
FROM ./ggml-model-Q4_K_M.gguf
 
# テンプレートの指定.チャットテンプレートに従って作成。
TEMPLATE "{{ if .System }}<|start_header_id|>system<|end_header_id|>
 
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
 
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
 
{{ .Response }}<|eot_id|>"
 
# モデルに対する指示
SYSTEM You are an expert on all subject matters. You provide accurate and factual answers in Japanese.
 
# 回答の傾向に対する設定。0に近いほど厳密な回答になり、1に近いほど創造的な回答になります。デフォルトは0.8です。
PARAMETER temperature 0.5
# チャットの停止条件を指定します。Llama3がベースの場合は以下のように指定します。
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>

あとは以下でModelfileを元にしたモデルを作成します。suzume-llama3-modelは私が決めた適当なモデル名です。任意のモデル名を指定してください。

~/test-llama3
$ ollama create suzume-llama3-model -f ./Modelfile

上記を実行すると、以下のように表示されます。環境にもよりますが、M1 Pro だと数秒で完了しました。

~/test-llama3
$ ollama create suzume-llama3-model -f ./Modelfile
transferring model data
using existing layer sha256:01fbc7f9eddf50c50defdfdb43723c40c544b4060227d521661fa0fbab532c6e
creating new layer sha256:46e8c748baf1881ef94b0a139b091547753c6d687009e82551c87ed985d4a5b2
creating new layer sha256:2f46471d4b93cc3bc3ce47b55ad5cc395e4eaf9784436f954efd32879951abb9
creating new layer sha256:719f2f20fc0bc5a6f26eebdc7e71d982f8a884080decbb39c58b7f306ee70092
writing manifest
success

作成したモデルを以下で動かしてみます。

~/test-llama3
$ ollama run suzume-llama3-model

実行すると以下のように質問を受け付ける状態となり、日本語で質問を入力すると日本語で回答してくれます。

~/test-llama3
$ ollama run suzume-llama3-model
>>> こんにちは。
こんにちは。何かお手伝いできることがありますか?
 
>>> 日本の首都はどこですか?
日本の首都は東京です。
 
>>> 夏目漱石を知っていますか?
夏目漱石は日本の作家で、代表作に「坊ちゃん」、「三四郎」などがあります。彼の作品は、20世紀初頭の日本社会や文化を描いたものが多く、特に「坊ちゃん」は日本文学史上重要な作品の一つとして知られています。

以上で日本語モデルであるsuzume-llama-3-8B-japaneseを Ollama で動かすことができました。

モデルの一覧表示と削除

作成したモデルの確認は以下のようにlistコマンドで確認できます。

~/test-llama3
$ ollama list
NAME                            ID              SIZE    MODIFIED
suzume-llama3-model:latest      9e70b2cfb575    4.9 GB  4 minutes ago
llama3:latest                   365c0bd3c000    4.7 GB  About an hour ago

削除したい場合は以下のようにrmを使用します。

~/test-llama3
$ ollama rm suzume-llama3-model:latest
deleted 'suzume-llama3-model:latest'

Modelfile の確認

Modelfile を書く際に参考にするために、使用したいモデルのベースとなっているモデルについてshowコマンドを使用すると、そのモデルの Modelfile を表示することができます。 例えば、今回使用したsuzume-llama-3-8B-japaneseはllama3がベースとなっているので、llama3について確認すると以下のように表示されます。

~/test-llama3
$ ollama show --modelfile llama3:latest
 
# Modelfile generated by "ollama show"
 
# To build a new Modelfile based on this, replace FROM with:
 
# FROM llama3:latest
 
FROM /Users/trusware/.ollama/models/blobs/sha256-6a0746a1ec1aef3e7ec53868f220ff6e389f6f8ef87a01d77c96807de94ca2aa
TEMPLATE "{{ if .System }}<|start_header_id|>system<|end_header_id|>
 
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
 
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
 
{{ .Response }}<|eot_id|>"
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>
PARAMETER num_keep 24
LICENSE "META LLAMA 3 COMMUNITY LICENSE AGREEMENT
 
Meta Llama 3 Version Release Date: April 18, 2024
“Agreement” means the terms and conditions for use, reproduction, distribution and modification of the Llama Materials set forth herein.
 
“Documentation” means the specifications, manuals and documentation accompanying Meta Llama 3 distributed by Meta at https://llama.meta.com/get-started/.
 
“Licensee” or “you” means you, or your employer or any other person or entity (if you are entering into this Agreement on such person or entity’s behalf), of the age required under applicable laws, rules or regulations to provide legal consent and that has legal authority to bind your employer or such other person or entity if you are entering in this Agreement on their behalf.
 
“Meta Llama 3” means the foundational large language models and software and algorithms, including machine-learning model code, trained model weights, inference-enabling code, training-enabling code, fine-tuning enabling code and other elements of the foregoing distributed by Meta at https://llama.meta.com/llama-downloads.
 
“Llama Materials” means, collectively, Meta’s proprietary Meta Llama 3 and Documentation (and any portion thereof) made available under this Agreement.
 
“Meta” or “we” means Meta Platforms Ireland Limited (if you are located in or, if you are an entity, your principal place of business is in the EEA or Switzerland) and Meta Platforms, Inc. (if you are located outside of the EEA or Switzerland).
 
By clicking “I Accept” below or by using or distributing any portion or element of the Llama Materials, you agree to be bound by this Agreement.
 
1.  License Rights and Redistribution.
 
        a. Grant of Rights. You are granted a non-exclusive, worldwide, non-transferable and royalty-free limited license under Meta’s intellectual property or other rights owned by Meta embodied in the Llama Materials to use, reproduce, distribute, copy, create derivative works of, and make modifications to the Llama Materials.
        b. Redistribution and Use.
                i. If you distribute or make available the Llama Materials (or any derivative works thereof), or a product or service that uses any of them, including another AI model, you shall (A) provide a copy of this Agreement with any such Llama Materials; and (B) prominently display “Built with Meta Llama 3” on a related website, user interface, blogpost, about page, or product documentation. If you use the Llama Materials to create, train, fine tune, or otherwise improve an AI model, which is distributed or made available, you shall also include “Llama 3” at the beginning of any such AI model name.
                ii. If you receive Llama Materials, or any derivative works thereof, from a Licensee as part of an integrated end user product, then Section 2 of this Agreement will not apply to you.
                iii. You must retain in all copies of the Llama Materials that you distribute the following attribution notice within a “Notice” text file distributed as a part of such copies: “Meta Llama 3 is licensed under the Meta Llama 3 Community License, Copyright © Meta Platforms, Inc. All Rights Reserved.”
                iv. Your use of the Llama Materials must comply with applicable laws and regulations (including trade compliance laws and regulations) and adhere to the Acceptable Use Policy for the Llama Materials (available at https://llama.meta.com/llama3/use-policy), which is hereby incorporated by reference into this Agreement.
                v. You will not use the Llama Materials or any output or results of the Llama Materials to improve any other large language model (excluding Meta Llama 3 or derivative works thereof).
 
2.  Additional Commercial Terms. If, on the Meta Llama 3 version release date, the monthly active users of the products or services made available by or for Licensee, or Licensee’s affiliates, is greater than 700 million monthly active users in the preceding calendar month, you must request a license from Meta, which Meta may grant to you in its sole discretion, and you are not authorized to exercise any of the rights under this Agreement unless or until Meta otherwise expressly grants you such rights.
 
3.  Disclaimer of Warranty. UNLESS REQUIRED BY APPLICABLE LAW, THE LLAMA MATERIALS AND ANY OUTPUT AND RESULTS THEREFROM ARE PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OF ANY KIND, AND META DISCLAIMS ALL WARRANTIES OF ANY KIND, BOTH EXPRESS AND IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. YOU ARE SOLELY RESPONSIBLE FOR DETERMINING THE APPROPRIATENESS OF USING OR REDISTRIBUTING THE LLAMA MATERIALS AND ASSUME ANY RISKS ASSOCIATED WITH YOUR USE OF THE LLAMA MATERIALS AND ANY OUTPUT AND RESULTS.
 
4.  Limitation of Liability. IN NO EVENT WILL META OR ITS AFFILIATES BE LIABLE UNDER ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, TORT, NEGLIGENCE, PRODUCTS LIABILITY, OR OTHERWISE, ARISING OUT OF THIS AGREEMENT, FOR ANY LOST PROFITS OR ANY INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL, EXEMPLARY OR PUNITIVE DAMAGES, EVEN IF META OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF ANY OF THE FOREGOING.
 
5.  Intellectual Property.
    a. No trademark licenses are granted under this Agreement, and in connection with the Llama Materials, neither Meta nor Licensee may use any name or mark owned by or associated with the other or any of its affiliates, except as required for reasonable and customary use in describing and redistributing the Llama Materials or as set forth in this Section 5(a). Meta hereby grants you a license to use “Llama 3” (the “Mark”) solely as required to comply with the last sentence of Section 1.b.i. You will comply with Meta’s brand guidelines (currently accessible at https://about.meta.com/brand/resources/meta/company-brand/ ). All goodwill arising out of your use of the Mark will inure to the benefit of Meta.
    b. Subject to Meta’s ownership of Llama Materials and derivatives made by or for Meta, with respect to any derivative works and modifications of the Llama Materials that are made by you, as between you and Meta, you are and will be the owner of such derivative works and modifications.
    c. If you institute litigation or other proceedings against Meta or any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Llama Materials or Meta Llama 3 outputs or results, or any portion of any of the foregoing, constitutes infringement of intellectual property or other rights owned or licensable by you, then any licenses granted to you under this Agreement shall terminate as of the date such litigation or claim is filed or instituted. You will indemnify and hold harmless Meta from and against any claim by any third party arising out of or related to your use or distribution of the Llama Materials.
 
6.  Term and Termination. The term of this Agreement will commence upon your acceptance of this Agreement or access to the Llama Materials and will continue in full force and effect until terminated in accordance with the terms and conditions herein. Meta may terminate this Agreement if you are in breach of any term or condition of this Agreement. Upon termination of this Agreement, you shall delete and cease use of the Llama Materials. Sections 3, 4 and 7 shall survive the termination of this Agreement.
 
7.  Governing Law and Jurisdiction. This Agreement will be governed and construed under the laws of the State of California without regard to choice of law principles, and the UN Convention on Contracts for the International Sale of Goods does not apply to this Agreement. The courts of California shall have exclusive jurisdiction of any dispute arising out of this Agreement.
 
Meta Llama 3 Acceptable Use Policy
Meta is committed to promoting safe and fair use of its tools and features, including Meta Llama 3. If you access or use Meta Llama 3, you agree to this Acceptable Use Policy (“Policy”). The most recent copy of this policy can be found at https://llama.meta.com/llama3/use-policy
Prohibited Uses
We want everyone to use Meta Llama 3 safely and responsibly. You agree you will not use, or allow others to use, Meta Llama 3 to:
 
1. Violate the law or others’ rights, including to:
   a. Engage in, promote, generate, contribute to, encourage, plan, incite, or further illegal or unlawful activity or content, such as:
   i. Violence or terrorism
   ii. Exploitation or harm to children, including the solicitation, creation, acquisition, or dissemination of child exploitative content or failure to report Child Sexual Abuse Material
   iii. Human trafficking, exploitation, and sexual violence
   iv. The illegal distribution of information or materials to minors, including obscene materials, or failure to employ legally required age-gating in connection with such information or materials.
   v. Sexual solicitation
   vi. Any other criminal activity
   b. Engage in, promote, incite, or facilitate the harassment, abuse, threatening, or bullying of individuals or groups of individuals
   c. Engage in, promote, incite, or facilitate discrimination or other unlawful or harmful conduct in the provision of employment, employment benefits, credit, housing, other economic benefits, or other essential goods and services
   d. Engage in the unauthorized or unlicensed practice of any profession including, but not limited to, financial, legal, medical/health, or related professional practices
   e. Collect, process, disclose, generate, or infer health, demographic, or other sensitive personal or private information about individuals without rights and consents required by applicable laws
   f. Engage in or facilitate any action or generate any content that infringes, misappropriates, or otherwise violates any third-party rights, including the outputs or results of any products or services using the Llama Materials
   g. Create, generate, or facilitate the creation of malicious code, malware, computer viruses or do anything else that could disable, overburden, interfere with or impair the proper working, integrity, operation or appearance of a website or computer system
 
2. Engage in, promote, incite, facilitate, or assist in the planning or development of activities that present a risk of death or bodily harm to individuals, including use of Meta Llama 3 related to the following:
   a. Military, warfare, nuclear industries or applications, espionage, use for materials or activities that are subject to the International Traffic Arms Regulations (ITAR) maintained by the United States Department of State
   b. Guns and illegal weapons (including weapon development)
   c. Illegal drugs and regulated/controlled substances
   d. Operation of critical infrastructure, transportation technologies, or heavy machinery
   e. Self-harm or harm to others, including suicide, cutting, and eating disorders
   f. Any content intended to incite or promote violence, abuse, or any infliction of bodily harm to an individual
 
3. Intentionally deceive or mislead others, including use of Meta Llama 3 related to the following:
   a. Generating, promoting, or furthering fraud or the creation or promotion of disinformation
   b. Generating, promoting, or furthering defamatory content, including the creation of defamatory statements, images, or other content
   c. Generating, promoting, or further distributing spam
   d. Impersonating another individual without consent, authorization, or legal right
   e. Representing that the use of Meta Llama 3 or outputs are human-generated
   f. Generating or facilitating false online engagement, including fake reviews and other means of fake online engagement
   g. Fail to appropriately disclose to end users any known dangers of your AI system
 
Please report any violation of this Policy, software “bug,” or other problems that could lead to a violation of this Policy through one of the following means:
_ Reporting issues with the model: https://github.com/meta-llama/llama3
_ Reporting risky content generated by the model: developers.facebook.com/llama_output_feedback
_ Reporting bugs and security concerns: facebook.com/whitehat/info
_ Reporting violations of the Acceptable Use Policy or unlicensed uses of Meta Llama 3: [email protected]
 

Ollama をサーバとして動かして API から操作したい場合

Ollama をサーバとして動作させて API 経由でチャットを送信、回答を得ることができます。API 経由で使えると、Web アプリやモバイルアプリからも使用できます。詳細は以下の記事にまとめていますので必要な方は見てみてください。

🤖 Ollamaを使ってLlama3やPhi3をサーバとして動かしてAPIで操作する

Ollamaを使ってLlamaやPhi3をUbuneu上でサーバとして動かし、curlコマンドを使ってHTTPリクエストで質問を送信し、その結果を確認するまでの手順を解説します。

ritaiz.com

まとめ

日本語用にファインチューニングされた Llama3 のモデルを Ollama で動かす手順を解説しました。Modelfile によって公開されている色々なモデルを簡単に動かすことができるので、興味のある方はぜひ試してみてください。