ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

Chat-GPT相当を自社環境で使うOpen LLMの世界

Open LLMとChat GPTの違いと導入のメリットを解説しています。実際にOpen LLMを利用する時に登場するHugging FaceやTransformersの解説行います。最後に代表的なOpen LLMであるMeta社が開発したLlama 2を動作させて、NWの質問等に答えてもらっています。

ライター:荒牧 大樹
2007年ネットワンシステムズ入社し、コラボレーション・クラウド製品の担当を経て現在はAI・データ分析製品と技術の推進に従事。最近では次世代の計算環境であるGPU・FPGA・量子コンピュータに注目している。

目次

【更新日】2023/11/8

はじめに

大規模言語モデル(LLM)Open AIChat GPTの公開以降に一般のユーザでも文章生成の大きな可能性を感じる事が出来ました。Chat GPTはある程度の機能を無償で利用できたことから一般ユーザの間でも一気に広がりました。Open AI社のChat GPTGooglePaLM 2WebのインターフェースやAPIでの利用に限られており、モデル自体は一般公開されていません。今回はモデルが一般公開されているオープンLLMを取り上げます。

オープン LLMについて

簡単にダウンロード可能な事前学習済みモデルがオープン モデルです。特にLLMに関してはトレーニングに必要な環境やデータも大規模化しており、企業単体での事前学習済みモデルの作成は大企業以外では困難になっています。その為LLMに取ってオープンモデルの利用は重要な要素となります。オープンとは言え、モデルによってライセンスは様々な為、特に商用利用にあたっては注意が必要です。オープンモデルはHugging Face社が運営しているHugging Face Hub上に公開される事が多くなってきています。オープンLLMの事前学習済みモデルとして有名なのはLLMA 2/MPT/Vicuna/Falcon等を上げる事が出来ます。

オープン LLMを使う理由

現時点でオープンLLMは既存のOpen AIGPT-4や、GooglePaLM 2を超える性能は提供できていません。何をもって性能と言うのかは難しい点ですが、様々な評価指標から見る限りGPT-4が質問回答や要約等のタスクで高度な文章を生成してくれます。その為LLMの効果や機能等を確認したい場合は、まずはOpen AI/Azure Open AI / Google PaLM 2の利用をお勧めします。サービスの機能として満足できない部分がある場合や、特定のユースケースに限った利用を安価に実現したい場合等はオープン LLMを検討課題に挙げても良いと思います。

オープンLLMを利用する場合

オープンLLMを実施に利用する場合は一般的にはHugging Face Hub上のモデルをDownloadして、Python等からライブラリのTransformersを使ってアプリケーション開発を行います。今回はHugging Face HubからモデルをDownloadして、実施オープンLLMのLlama 2を利用してみたいと思います。

Hugging Faceについて

Hugging Face社は機械学習のモデル・データ等を提供する、Hugging Face HubHugging Face Hub上のデータを用意に活用できるTransformersを提供している会社です。その外に推論のエンドポイントや、学習環境やコンサルティングサービスを提供しています。例えばMeta社のLLAMA等のオープンソースのモデルがHugging Face Hub上で公開されています。

Transformersについて

Hugging Faceが主に開発を行っている事前学習モデルの利用や、Fine tuning等を簡単に行う為のAPIを提供します。自然言語、画像、音声、マルチモーダルに対応しており、PyTorch/Tensorflow/JAXとの互換性を提供しています。今回はTransformersを用いてLLaMA2のモデルをHugging Face HubからDownloadして利用します。

Llama2について

2023年にMeta社が公開している事前学習済みモデルです。ある一定の条件下で商用利用が可能となっています。Meta社に申請後、Hugging Face上さらに申請を行えばTransformersを使って簡単に利用可能となります。7B/13B/70Bのモデルが利用可能となっており、34Bのモデルは回答品質に難があったため公開が延期されています。モデルとしては最大約4000 Tokenを利用可能です。どの程度の文字が利用出来るかは言語やTokenizerによって変化します。日本語だと1文字1 Token。英語だと4文字1Token程度です。Llama 2については今の所英語のみがサポートされています。以下論文を参照すると、学習データに日本語はほとんど含まれていません。

Llama 2を利用する

Llama 2ですが、TransformersAPIを使えば簡単に利用可能です。今回はオンプレのNVIDIA A100が搭載されたGPUの環境で動作を確認しました。Hugging Faceのサイト上でも手軽に確認はできます。サンプルコードですが、以下のBlogを参考にしています。https://huggingface.co/blog/llama2

from huggingface_hub import notebook_login
notebook_login()

from transformers import AutoTokenizer
import transformers
import torch

model = "meta-llama/Llama-2-7b-chat-hf"

tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
  "text-generation",
  model=model,
  torch_dtype=torch.float16,
  device_map="auto",
)

sequences = pipeline(
  'Please Tell me about Cisco Systems.\n',
  do_sample=True,
  top_k=10,
  num_return_sequences=1,
  eos_token_id=tokenizer.eos_token_id,
  max_length=256
)

for seq in sequences:
 print(f"Result: {seq['generated_text']}")

これに対する結果は以下の通りです。

Result: Please Tell me about Cisco Systems.

Cisco Systems is an American multinational technology conglomerate headquartered in San Jose, California, that specializes in networking hardware, software, and services. Cisco was founded in 1984 by a group of former Stanford University computer science students led by Leonard Bosack and Sandy Lampert. The company's original name was "San Francisco Networks," but it was later renamed to "Cisco Systems" in reference to the nearby city of San Jose.

Cisco is one of the largest and most successful technology companies in the world, with a market value of over $200 billion. The company's products and services are used by businesses, governments, and service providers to build and manage networks, connect people and devices, and enable cloud computing and the Internet of Things (IoT).

Cisco's product portfolio includes networking equipment such as switches, routers, and firewalls; wireless access points; and network management software. The company also offers a range of cloud and cybersecurity solutions, including security appliances, software-defined networking (SDN) products, and cloud

NWの設定を作成するPromptを試してみる

以下のPromptLLAMA 2Cisco Catalyst SwitchVLANを追加する方法を聞いてみました。Promptを工夫すればある程度の回答は返ってきます。7B/13B共に回答は安定していませんでした。

You are Network System Engineer. Please answer following question. How to add VLAN to Cisco Catalyst switch?

Answer: To add a VLAN to a Cisco Catalyst switch, you can follow these steps: 1. Connect to the switch using a serial cable or a network cable.2. Enter the switch's command-line interface (CLI) by typing "cisco" and pressing Enter.3. Use the "vlan" command to create a new VLAN. For example, to create VLAN 10, you would type "vlan 10".4. Use the "vlan" command with the "dot1q" option to enable the VLAN on a specific port. For example, to enable VLAN 10 on port GigabitEthernet0/1, you would type "vlan 10 dot1q gige0/1".5. Use the "show vlan" command to verify that the VLAN has been created and enabled on the switch

所感

今回はオープン LLMの解説と、実際にLLaMa2をオンプレ環境で動作させて試してみました。Llama 27B/13B共にPromptを工夫すれば、ある程度の目的の回答は返ってきます。しかしながらChatGPTに比べると、意味の理解の仕方や回答の安定性が劣っている印象でした。Llama 2 70BHugging Faceのサイト上で利用するとかなり安定した回答を得られ、ChatGPTとそん色無い印象を持ちました。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND