このシリーズではChatGPTを中心とした最新の大規模言語モデル(LLM)に関する情報をまとめています。最新AI技術を使用した「ChatGPT」をはじめとした、自然言語処理技術の概要や活用方法について紹介しておりますので、ぜひ最後までご覧ください。

※大規模言語モデルは技術の進歩がとても速い分野となりますので、最新の情報もこちらからご確認ください。

今回の記事ではLLMの1つであるDolly 2.0の実装を紹介します。
Google Colabを使用して簡単に実装できますので、ぜひ最後までご覧ください。

Dolly 2.0の概要

Dolly 2.0とは

Dolly 2.0は、Databricksが開発した機械学習プラットフォームで、命令に従って働く言語モデルです。商用利用が可能で、さまざまな能力があります。このモデルは、Databricks社員が作成した15,000の学習データを使って学習しており、オープンソースで利用できます。

Dolly 2.0は、EleutherAIのpythiaモデルファミリーを基にしており、12Bのパラメーターがあります。このモデルは、高品質な指示データセットを使って調整されています。Dolly 2.0のすべての要素はオープンソース化されており、企業が自分たちで会話できる言語モデルを作成・カスタマイズできます。

このプロジェクトでは、Databricks-dolly-15kというデータセットが使われています。これには、大規模言語モデルを調整するための15,000の人工プロンプト/レスポンスペアが含まれています。データセットは、ブレーンストーミングからコンテンツ生成、情報抽出、要約まで幅広い行動を表現できるように設計されています。作成するために、オープンQ&A、クローズドQ&A、Wikipediaからの情報抽出、Wikipediaからの情報要約、ブレーンストーミング、分類、クリエイティブな記述などです。このデータセットは商用利用が可能です。

詳細は以下のリンクからご確認ください。

導入

ここからはGoogle colabを使用して実装していきます。
(Google colabの使用方法はこちら⇨使い方

※今回紹介するコードは以下のリンクからもご覧いただけます。

Open In Colab

まずはGPUを使用できるように設定をします。

「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更・「GPUクラス」をプレミアムに変更・「ランタイムの仕様」をハイメモリに変更

必要なライブラリをインストールします。

!pip install accelerate transformers
import torch
from transformers import pipeline

# パイプラインの準備
generate_text = pipeline(
    model="databricks/dolly-v2-12b", 
    torch_dtype=torch.bfloat16, 
    trust_remote_code=True, 
    device_map="auto"
)

以上で準備が完了しました。

英語の場合

まずは英語で試してみます。「What are the famous sightseeing spots in Japan?」に続く文章を生成します。

# プロンプトの準備
prompt = "What are the famous sightseeing spots in Japan?"

# 推論の実行
res = generate_text(prompt)
print(res[0]["generated_text"])

出力結果:

There are many famous sightseeing spots in Japan, for example, Tokyo, Osaka, Kyoto, Nara and Nagoya. 
In Tokyo, you can visit the Imperial Palace, the Tsukiji market and the city's historic districts, such as Ginza and Tsukiji. 
Osaka has Dotonbori, which is a series of 1-1 signed alleyways, running from Shin-Osaka through Dotonbori Park and back to the Osakasuicho station, that has become synonymous with Osaka. 
Kyoto is famous for its Kyoto Tower and old Japanese castles, such as Matsuju-taisha and Yamashiro-kujo. 
Nagoya is known for its historic technology and aviation museums. 
Lastly, Nara is famous for its Buddhist temple complex.

# 日本語訳
日本には、東京、大阪、京都、奈良、名古屋など、有名な観光地がたくさんあります。
東京では、皇居、築地市場、銀座や築地などの歴史的な街並みなどを訪れることができます。
大阪には道頓堀がある。新大阪から道頓堀公園を通り、大崎町駅に戻る1-1の路地は、大阪の代名詞になっている。
京都は、京都タワーや松寿大社、山城国城などの日本の古城で有名です。
名古屋は、歴史的な技術や航空博物館があることで知られています。
最後に、奈良は仏教寺院群として有名です。

日本語の場合

次に日本語でも試してみます。「日本で有名な観光地は~」に続く文章を生成します。

# プロンプトの準備
prompt = "日本で有名な観光地は?"

# 推論の実行
res = generate_text(prompt)
print(res[0]["generated_text"])

出力結果:

名古屋、東京、Osaka

文章を生成する場合は英語を使用したほうがよさそうであることがわかりました。

まとめ

最後までご覧いただきありがとうございました。

今回の記事ではLLMの1つであるDolly 2.0の実装を紹介しました。