【生成AI】環境構築時に知っておきたいこと

[PONOS Advent Calendar 2024](https://qiita.com/advent-calendar/2024/ponos) 12日目の記事です。

## はじめに:eyeglasses:

生成AIを活用する際に必要な環境構築の基本と、事前に準備しておくと便利な情報をまとめました。
特にNVIDIAのGPUやPyTorchのバージョン適合について、初心者が陥りやすいポイントを重点的に解説します。

## この記事の対象者:eyeglasses:
・エンジニア全般
・生成AIに興味がある方、全般

## 動作環境、前提条件:eyeglasses:
・Windows PC (10以上を想定)
・NVIDIAのGPU（理想はVRAM 12GB以上）

## Hugging Face
https://huggingface.co/

<details><summary>Hugging Faceについて</summary>
Hugging Faceは、主に自然言語処理（NLP）分野で有名なAIスタートアップで、オープンソースのライブラリやプラットフォームを提供しています。同社の提供するツールやリソースは、AIや機械学習の研究者、エンジニア、開発者が効率的にモデルをトレーニング、デプロイ、利用するのに役立っています。以下は主な特徴やサービスの概要です。

主な製品とサービス

1. Transformersライブラリ
    BERT、GPT、T5など、最新のトランスフォーマーモデルを簡単に利用できるPythonライブラリ。
    事前学習済みモデルが多数提供されており、数行のコードで活用可能。
    モデルの微調整（fine-tuning）にも対応。

2. Datasetsライブラリ
    大規模データセットを効率的に扱えるライブラリ。
    機械学習に必要な多種多様なデータセット（テキスト、画像など）をダウンロードしてそのまま使用可能。
    ストリーミングやデータの前処理機能を提供。

3. Hugging Face Hub
    モデル、データセット、コードの共有プラットフォーム。
    オープンソースコミュニティに対応しており、ユーザー同士でモデルやリソースを共有可能。
    REST APIを通じた簡単なモデルのデプロイも可能。

4. Spaces
    機械学習アプリケーションを簡単にデプロイするためのホスティングプラットフォーム。
    GradioやStreamlitで構築されたインタラクティブなデモを公開できる。

5. Tokenizersライブラリ
    高速で効率的なトークナイザライブラリ。
    Pythonだけでなく、Rustベースで動作するため、非常に高速。

</details>

[Hugging Face](https://huggingface.co)さん、私は最初怪しいサイトだと疑っていたので
アカウント作成しなかったし、トークンも作成しませんでした。
しかしそれは間違いで、AI活動していくうえでHugging Faceのアカウントもトークンも必須です。

作り方も簡単に紹介します

## Hugging Faceのアカウント
アカウント作成手順

    1.Hugging Faceの公式サイトにアクセスします。
    2.ページ右上の「Sign Up」ボタンをクリックします。
    3.サインアップ画面で以下の情報を入力します：
        メールアドレス
        パスワード
        ユーザー名
        氏名
    4.利用規約と行動規範に同意します。
    5.「Create Account」をクリックします。
    6.登録したメールアドレス宛に認証メールが送信されます。
    7.メール内の認証URLをクリックして、アカウント登録を完了させます。
    

## Hugging Face トークン作成

Hugging Faceでアクセストークンを作成する手順

    1.Hugging Faceにログインします。
    2.画面右上のプロフィールアイコンをクリックし、「Settings」を選択します。
    3.左側のメニューから「Access Tokens」を選択します。
    4.「New token」または「Create new token」ボタンをクリックします。
    5.トークン作成画面で以下の情報を入力します：
        Name: トークンの名前（任意の名前を設定）
        Role/Permissions: 権限を選択（read、write、admin）
    6.「Generate a token」ボタンをクリックしてトークンを生成します。
    生成されたトークンが表示されるので、必ずコピーして安全な場所に保存してください。

注意点

    トークンは一度しか表示されないため、必ず保存してください。
    トークンは秘密情報として扱い、他人と共有しないでください。
    必要に応じて権限を適切に設定し、セキュリティに注意してください。

このアクセストークンを使用することで、Hugging FaceのAPIやサービスにプログラムからアクセスできるようになります

## Windows PowerShell ISE
Windowsでのコマンドラインツールは昔からあるコマンドプロンプトが有名ですが、現在ではWindows PowerShell ISEがお勧めです

<details><summary>Windows PowerShell ISEについて</summary>
Windows PowerShell ISE（Integrated Scripting Environment）は、Windows PowerShellのスクリプト作成、テスト、およびデバッグを行うための統合スクリプト環境です。

主な特徴

    グラフィカルユーザーインターフェース (GUI):
        コマンド実行、スクリプト作成、デバッグを1つの画面で行える。
    複数行編集:
        スクリプトの複数行を一度に編集可能。
        Shift + Enterで空白行を挿入可能。
    タブ補完:
        コマンドやパラメータの入力を補完してくれる。
    構文の色分け:
        コードの可読性が向上する。
    選択的な実行:
        スクリプトの一部のみを選択して実行可能（F5キーで実行）。
    状況依存ヘルプ:
        コマンドに関連するヘルプ情報を簡単に取得可能（例: F1キー）
</details>


スタートメニューから
「Windows PowerShell ISE」
と検索すればすぐに使えます

各種コマンドについてはこちらの記事など参考になります

https://qiita.com/opengl-8080/items/bb0f5e4f1c7ce045cc57

## Windows の長いパスを有効化
これを有効にしないと、インストール時や実行時にエラーになります

レジストリを編集します

    Win + R を押して regedit と入力し Enter。
    以下のキーを探します：
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
    
    LongPathsEnabled の値を 1 に変更します。
    
    値が存在しない場合、新しい DWORD (32ビット値) を作成し、名前を LongPathsEnabled に設定します。

## PyTorchとCUDAのVersionを合わせる
**今回の記事で一番大事なところです**


<details><summary>PyTorchとは</summary>
PyTorchは、Facebookの人工知能研究グループ（AI Research Lab）が開発したPython用のオープンソース深層学習フレームワークです
。2016年10月に公開され、以下の特徴を持っています：

    動的計算グラフ：実行時に動的にグラフが変更されるため、モデルの構築とデバッグが容易です
    
    Pythonicな設計：Pythonのデータ構造と密接に統合されており、直感的な操作が可能です
    
    強力なGPUサポート：CUDAを活用し、NVIDIAのGPUで高速なテンソル計算が可能です
    
    高機能なプログラムを簡単に記述：シンプルな記述で複雑なモデルを構築できます
    
    Numpyとの類似性：基本的な操作方法がNumpyと酷似しているため、Python開発者になじみやすいです
    
PyTorchの主な構成要素には、データの読み込みと処理を行うDatasets & DataLoaders、前処理を担当するTransforms、学習モデルを構築するNeuralNetwork Model (torch.nn)、そして損失関数の最適化を行うOptimizeがあります。 これらの特徴により、PyTorchは研究者や開発者にとって柔軟で効率的な深層学習ツールとなっています。

</details>

<details><summary>NVIDIA CUDAについて</summary>
CUDAは、NVIDIAが開発した並列コンピューティングプラットフォームおよびプログラミングモデルです。2007年に導入され、GPUの並列処理能力を汎用的な計算に活用することを可能にしました。 
主な特徴：

    GPU活用：グラフィックス処理以外の計算タスクでGPUの能力を利用できます
    
    高速化：数千のGPUコアを同時に使用することで、大量のデータを並行処理し、計算を大幅に高速化します
    
    プログラミング環境：C/C++をベースとした拡張言語、専用コンパイラ、ライブラリ、APIを提供します
    
    幅広い応用：科学計算、機械学習、ビッグデータ解析、金融工学など多様な分野で活用されています

CUDAを使用するには、NVIDIA製GPUが必要です。また、PyTorchなどの機械学習フレームワークでCUDAを利用する際は、適切なバージョンの組み合わせが重要です
CUDAは、GPUの計算能力を最大限に引き出し、高性能な並列計算を実現するための強力なツールとして、様々な分野で革新的な成果をもたらしています
</details>

こちらの記事も参考になります

https://qiita.com/ketaro-m/items/4de2bd3101bcb6a6b668

それではVersionを意識しながらそれぞれインストールしてみましょう

## CUDAインストール
先に[PyTorch](https://pytorch.org/get-started/locally/)の対応Versionを確認します

[PyTorch](https://pytorch.org/get-started/locally/)公式に書いてある通りで、現在は以下のようになっています。

【PyTorchの対応CUDAバージョン】（2024年12月時点）
```
安定版:
- CUDA 11.8
- CUDA 12.1
- CUDA 12.4

プレビュー版:
- CUDA 11.8
- CUDA 12.4
- CUDA 12.6
```

今回は安定版の最新、CUDA12.4をインストールします

[CUDA12.4 ダウンロード](https://developer.nvidia.com/cuda-12-4-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exe_local)

ダウンロード後はインストールを実行すれば完了です。

インストール後、PC再起動が必要です。

再起動後はパスの確認を推奨します
コマンドライン上で
```
nvcc -V
```
このコマンドでNVIDIAとCUDAの情報が確認できればOKです
表示例）
```
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Mon_Apr_03_19:15:54_PDT_2024
Cuda compilation tools, release 12.4, V12.4.105
```

## PyTorchインストール
CUDA12.4をインストールしたのでVersionが合致するように以下のコマンドでインストールします
```
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
```

インストール完了後、以下のコマンドで確認
```
 pip3 show torch
```
パッケージ情報が表示されていれば無事完了です


## まとめ
Pythonについては多くの記事で解説されていますが、CUDAやPyTorchのバージョン適合、トークン管理、PowerShell設定などの周辺情報は意外と少ないと感じます。
本記事がその補完になれば幸いです。

次は、[@ANIZA_15](https://qiita.com/ANIZA_15)さんの記事です。
お楽しみに！！