# Day 1 (10/30)
## はじめに
本演習は10日から成ります(Day 1 - 10)。そのうち、Day 1 - 4は講義と演習を行い大規模言語モデルに関する基本的な知識を勉強します。Day 5 - 9はチームあるいは個人で、大規模言語モデルを使った何らかのアプリケーションを開発してもらいます。Day 10に発表会を行います。
8名のTAがおり、毎回最低3名は参加します。質問があれば気軽に質問してください。また、学科Slackにて随時質問を受け付けています。
本日(Day 1)は特に、全ての基本となるPythonやJupyter Notebookについて復習します。これらの基本的な知識は既に知っていることを前提としますので、もし今日の内容が難しいと感じたら自習しておくとよいでしょう。
## 環境構築
本日は、ゆっくりと環境設定を進めていきましょう。
```{admonition} 目的
:class: tip
Google Colab 上で、PyTorch、Hugging Face、Azure OpenAI を使えるようにする。
```
- 流れ:各項目毎に 1.簡単説明 → 2.インストール → 3.体験コードを回す。ここまで確認できたら、「ちゃんとインストールできている」と安心できます。
- 補足:Google Colab 上で設定を行いますが、必要に応じて自分のパソコンなどにもインストールしてみましょう。
### Google Colab
```{admonition} Google Colabとは?
:class: tip
ネット上で簡単に使える Jupyter Notebook 環境です!
```
1. インストールは不要。 [https://colab.google/](https://colab.google/) に入ると使える。
2. [Open Colab](https://colab.research.google.com/) を押して、公式Colabの説明を読んでいきましょう。最初のGemini APIの宣伝などは飛ばして良いです。
- 補足1:Jupyter notebookはデータ処理をする時に多く使われる。Python コードの一部のみをinteractiveに実行することができ、code snippet(途中過程)を確認するのが楽。
どのコードがどの役割をするのかを把握するときに、とても便利なので、大学の演習課題でも Jupyter notebook 環境が多く使われる。
- 補足2:[Google drive](https://drive.google.com/)から、作る事も可能。`My drive` → `Colab Notebooks` に作った notebook ファイル (.ipynbで終わるファイル) が見える。
### PyTorch
```{admonition} PyTorchとは?
:class: tip
Metaが開発した深層学習用のライブラリです。
```
1. PyTorchをインストール。実はPyTorchはデフォルトでGoogle Colabにインストールされていますが、念のためインストール方法も確認しておきましょう。
[公式サイト](https://pytorch.org/)から、インストールに必要なコマンドを取ってきて、実行する。
Google Colab上でインストールするには、セルにて、以下のように`pip`の前に`!`記号を付けたコマンドを実行する。
```python
!pip install torch torchvision
```
2. [公式 Tutorial 資料](https://docs.pytorch.org/tutorials/beginner/basics/quickstart_tutorial.html)より、「Run in Google Colab」を押すと、tutorialコードがGoogle Colab上で開きます。これらを一通り実行して、様子を確認しましょう。
今回は環境設定が目的なので、PyTorchの詳細な説明は省略します。
- 補足:[公式 Tutorial サイト](https://docs.pytorch.org/tutorials/index.html)に他の例も多いので、気になる方はやってみてください。
### Hugging Face
```{admonition} Hugging Faceとは?
:class: tip
オープンソースの大規模言語モデル(Large Language Model, 以下 LLM)やデータセットなどを共有・運営しているプラットフォームです。
```
1. 以下のコマンドでインストール。`transformers`もデフォルトでGoogle Colabにインストールされていますが、念のためインストール方法も確認しておきましょう。
```python
!pip install transformers
```
2. よく使われるオープンソース LLM の一つである [Llama3.2](https://huggingface.co/meta-llama/Llama-3.2-1B-Instruct) を実際に動かしてみましょう。
- 補足1:今回は、Hugging Faceの`transformers` のみを使いますが、`datasets`, `tokenizers`, `accelerate`, `trl` など、多くのライブラリも提供されています。必要になったときは、同じ方法でインストールすると良いでしょう。
- 補足2:オープンソースモデル (Open-source model)とは、誰でも利用できるようにインターネット上で公開されているモデルを指します。
多くの場合、ライセンスの制限が緩やかで、利用者が自由に使えることが特徴です。
ただし、モデルによってはオープンソースであっても遵守すべきルールがあります。
例えば、Llama 3 系列のモデルを基にして新しいモデルを公開する際には、モデル名の先頭に `Llama-3` を付ける必要があるという規定があります。
#### Llama3.2 from Meta
```{admonition} Llama3.2とは?
:class: tip
Meta が提供するオープンソース LLMです。 一般的な対話、質問応答、文章生成など、幅広い自然言語処理タスクを行うことができます。
```
1. 利用の準備: Llama 3.2 を使うためには、Hugging Face に登録したあと、[Llama 3.2](https://huggingface.co/meta-llama/Llama-3.2-1B-Instruct) のページから「利用申請」を行い、Meta からの許可を得る必要があります。 Hugging Face の会員登録は、基本的な設定で問題ありません。
2. 申請後の確認: 利用申請から許可を得るまでには、およそ 10 分ほどかかります。 申請状況は [ここのRequest Status](https://huggingface.co/settings/gated-repos) で確認できます。
3. トークンの発行: 許可を得たあと、「Meta から許可を得たユーザーである」ことを証明する Access Token を Hugging Face で作成します。
[こちらのページ](https://huggingface.co/settings/tokens) にアクセス → `Create new token` → `User permissions` → `Repositories` の 2項目を選択 → 一番下の `Create token` を押します。表示された文字列をコピーし、パスワードのように扱い、他人に見られない場所に保管しておきましょう。Llama のような認証が必要なモデルを使う際に必要です。
4. Colab で実行: [New Notebook](https://colab.new/) を開き、空のノートブック(`Untitled.ipynb`)でコードを実行して行きましょう。
ファイル名は自由に変更して構いません(例:`Llama3.2-test.ipynb`)。
セルにて、以下のコマンドを実行します。実行すると、トークンを入力する欄が表示されます。先ほどコピーしたトークンを貼り付けてログインします。
```python
from huggingface_hub import login
login()
```
次に以下のコードを実行します。実行すると、モデルのダウンロードが始まり、完了すると messages に書かれた内容が Llama 3.2 に渡され、それに対する応答を得られます。
`"You are a pirate chatbot who always responds in pirate speak!"` の部分を変更すると、LLM の役割(キャラクター)を変えることができます。
`"Who are you?"`の部分を変更すると、LLM に送る質問(入力文)を変えることができます。
その他、コードの詳細については、次回以降の授業で説明します。
```python
import torch
from transformers import pipeline
model_id = "meta-llama/Llama-3.2-1B-Instruct"
pipe = pipeline(
"text-generation",
model=model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
outputs = pipe(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
```
### Azure OpenAI
```{admonition} Azure OpenAIとは?
:class: tip
Microsoft のクラウドサービス「Azure」上で、OpenAI のモデルを利用できるサービスです。
```
1. 以下のコマンドでインストール。`openai` はデフォルトで Google Colab にインストールされていますが、バージョンが古いため、`-U` オプションを付けてアップデートする必要があります。
```python
!pip install -U openai
```
2. 今日は軽く GPT-5 との対話を体験してみましょう。
以下のコードを実行します。
`"You are a helpful assistant."` は、一般的によく使われる LLM の役割(キャラクター)を指定する部分で、ここを変えると LLM の性格や振る舞いを変えることができます。
`"私はパリに行きます。何を見れば良いでしょうか?"`の部分を変更すると、LLM に送る質問(入力文)を変えることができます。日本語で質問しているため、日本語で返答が得られます。
```python
import os
from openai import AzureOpenAI
endpoint = "https://xxxxxx" # slackでシェアします
model_name = "gpt-5"
deployment = "gpt-5"
subscription_key = "xxxxxxxxx" # slackでシェアします
api_version = "2024-12-01-preview"
client = AzureOpenAI(
api_version=api_version,
azure_endpoint=endpoint,
api_key=subscription_key,
)
response = client.chat.completions.create(
messages=[
{
"role": "system",
"content": "You are a helpful assistant.",
},
{
"role": "user",
"content": "私はパリに行きます。何を見れば良いでしょうか?",
}
],
max_completion_tokens=4096,
model=deployment
)
print(response.choices[0].message.content)
```
これで環境構築は終了です。お疲れさまでした。
本格的な演習や詳細な説明は Day 2 以降に行います。