0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Uncensored1776 Day 17: 環境構築ガイド

Last updated at Posted at 2025-12-16

Uncensored1776 Day 17: 環境構築ガイド

実践の準備を整える

公開日: 2025-12-17
シリーズ: 科学と神々株式会社 アドベントカレンダー
難易度: ★★☆☆☆ (初級)


⚠️ 動作確認環境について

本プロジェクトは Mac (Apple Silicon / M1-M4) 環境でのみ動作確認を行っています。
NVIDIA CUDA環境での動作は未検証です。CUDAを使用する場合は、コードの調整が必要になる可能性があります。

  • 確認済み: macOS + Apple Silicon (MPS バックエンド)
  • 未検証: Linux/Windows + NVIDIA GPU (CUDA バックエンド)

今日学ぶこと

  • 必要な環境の準備
  • 依存関係のインストール
  • 動作確認手順

1. システム要件

1.1 ハードウェア要件

【動作確認済み環境】
- Mac (Apple Silicon M1/M2/M3/M4)
- RAM: 16GB以上(Unified Memory)
- ストレージ: 50GB以上の空き

【一般的な推奨要件】
最小要件:
- CPU: 4コア以上
- RAM: 16GB以上
- ストレージ: 50GB以上の空き

推奨要件(NVIDIA GPU環境 - 未検証):
- CPU: 8コア以上
- RAM: 32GB以上
- GPU: NVIDIA GPU (8GB VRAM以上)
- ストレージ: 100GB以上のSSD

モデルサイズ別メモリ要件:
- 0.5B: 2GB
- 1.5B: 4GB
- 3B: 8GB
- 7B: 16GB
- 13B+: 24GB以上

1.2 ソフトウェア要件

必須:
- Python 3.10以上
- pip (最新版)
- Git

Apple Silicon (動作確認済み):
- macOS 13.0以上
- Xcode Command Line Tools
- PyTorch 2.0以上(MPSバックエンド対応)

NVIDIA GPU環境 (未検証):
- CUDA 11.8以上
- cuDNN 8.6以上

2. 環境構築手順

2.1 Pythonのインストール

# Ubuntu/Debian
sudo apt update
sudo apt install python3.10 python3.10-venv python3-pip

# macOS (Homebrew)
brew install python@3.10

# Windows
# python.org からインストーラをダウンロード

# バージョン確認
python3 --version
# Python 3.10.x

2.2 GPUバックエンドのセットアップ

Apple Silicon (MPS) - 動作確認済み

# Xcode Command Line Toolsのインストール
xcode-select --install

# PyTorchでMPSバックエンドの確認
python3 -c "import torch; print(f'MPS available: {torch.backends.mps.is_available()}')"
python3 -c "import torch; print(f'MPS built: {torch.backends.mps.is_built()}')"

# 出力例:
# MPS available: True
# MPS built: True

NVIDIA CUDA (未検証)

# NVIDIA ドライバの確認
nvidia-smi

# CUDAのインストール確認
nvcc --version

# 出力例:
# CUDA Version: 11.8

# PyTorchで確認
python3 -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}')"

# ※ CUDA環境は未検証のため、問題が発生した場合はIssueを報告してください

2.3 リポジトリのクローン

# Uncensored1776のクローン
git clone https://github.com/GodsGolemInc/uncensored1776.git
cd uncensored1776

# ディレクトリ構造の確認
ls -la
# docs/
# scripts/
# src/
# data/
# requirements.txt
# README.md

3. 仮想環境の作成

3.1 venvを使用

# 仮想環境の作成
python3 -m venv venv

# 有効化 (Linux/macOS)
source venv/bin/activate

# 有効化 (Windows)
venv\Scripts\activate

# プロンプトが変わることを確認
(venv) $

# 無効化
deactivate

3.2 condaを使用 (代替)

# conda環境の作成
conda create -n uncensored1776 python=3.10
conda activate uncensored1776

# PyTorchのインストール (conda推奨)
conda install pytorch pytorch-cuda=11.8 -c pytorch -c nvidia

4. 依存関係のインストール

4.1 基本パッケージ

# pipのアップグレード
pip install --upgrade pip

# requirements.txtからインストール
pip install -r requirements.txt

4.2 requirements.txtの内容

# requirements.txt

# 基本
torch>=2.0.0
transformers>=4.36.0
accelerate>=0.25.0

# 数値計算
numpy>=1.24.0
scipy>=1.10.0

# ユーティリティ
tqdm>=4.65.0
pyyaml>=6.0

# オプション(GPU最適化)
bitsandbytes>=0.41.0  # 量子化用

# 開発用
pytest>=7.0.0
black>=23.0.0

4.3 手動インストール

# PyTorchのインストール (Apple Silicon - 動作確認済み)
pip install torch torchvision torchaudio

# PyTorchのインストール (NVIDIA GPU - 未検証)
pip install torch --index-url https://download.pytorch.org/whl/cu118

# PyTorchのインストール (CPU only)
pip install torch --index-url https://download.pytorch.org/whl/cpu

# Transformersのインストール
pip install transformers accelerate

# その他の依存関係
pip install numpy scipy tqdm pyyaml

5. モデルのダウンロード

5.1 HuggingFace CLI

# huggingface_hubのインストール
pip install huggingface_hub

# ログイン (プライベートモデル用)
huggingface-cli login

# モデルのダウンロード
huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct

# ダウンロード先の確認
ls ~/.cache/huggingface/hub/

5.2 Pythonでのダウンロード

from transformers import AutoModelForCausalLM, AutoTokenizer

# モデルのダウンロード(自動的にキャッシュ)
model_name = "Qwen/Qwen2.5-0.5B-Instruct"

print(f"Downloading {model_name}...")
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
    trust_remote_code=True
)

print("Download complete!")
print(f"Model loaded on: {model.device}")

5.3 オフラインでの使用

# モデルをローカルに保存
python -c "
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = 'Qwen/Qwen2.5-0.5B-Instruct'
save_path = './models/qwen25_0.5b'

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)

tokenizer.save_pretrained(save_path)
model.save_pretrained(save_path)
print(f'Saved to {save_path}')
"

# ローカルからの読み込み
model = AutoModelForCausalLM.from_pretrained('./models/qwen25_0.5b')

6. 動作確認

6.1 基本的なテスト

# test_setup.py

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

def test_environment():
    """環境のテスト"""
    print("=" * 50)
    print("Environment Test")
    print("=" * 50)

    # PyTorch
    print(f"PyTorch version: {torch.__version__}")

    # Apple Silicon (MPS) チェック
    print(f"MPS available: {torch.backends.mps.is_available()}")
    if torch.backends.mps.is_available():
        print(f"MPS backend: Enabled (Apple Silicon)")

    # CUDA チェック(未検証環境向け)
    print(f"CUDA available: {torch.cuda.is_available()}")
    if torch.cuda.is_available():
        print(f"CUDA version: {torch.version.cuda}")
        print(f"GPU: {torch.cuda.get_device_name(0)}")
        print(f"GPU Memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB")

    # Transformers
    import transformers
    print(f"Transformers version: {transformers.__version__}")

    print("=" * 50)
    print("✓ Environment OK")
    print("=" * 50)

def test_model_loading():
    """モデル読み込みのテスト"""
    print("\n" + "=" * 50)
    print("Model Loading Test")
    print("=" * 50)

    model_name = "Qwen/Qwen2.5-0.5B-Instruct"
    print(f"Loading {model_name}...")

    try:
        tokenizer = AutoTokenizer.from_pretrained(
            model_name, trust_remote_code=True
        )
        model = AutoModelForCausalLM.from_pretrained(
            model_name,
            torch_dtype="auto",
            device_map="auto",
            trust_remote_code=True
        )
        print(f"✓ Model loaded on: {model.device}")

        # 簡単な推論テスト
        prompt = "Hello, how are you?"
        inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

        with torch.no_grad():
            outputs = model.generate(**inputs, max_new_tokens=20)

        response = tokenizer.decode(outputs[0], skip_special_tokens=True)
        print(f"✓ Generation test passed")
        print(f"  Input: {prompt}")
        print(f"  Output: {response[:100]}...")

    except Exception as e:
        print(f"✗ Error: {e}")
        return False

    print("=" * 50)
    print("✓ Model Loading OK")
    print("=" * 50)
    return True

if __name__ == "__main__":
    test_environment()
    test_model_loading()

6.2 テストの実行

# テストスクリプトの実行
python test_setup.py

# 期待される出力 (Apple Silicon - 動作確認済み):
# ==================================================
# Environment Test
# ==================================================
# PyTorch version: 2.1.0
# MPS available: True
# MPS backend: Enabled (Apple Silicon)
# CUDA available: False
# Transformers version: 4.36.0
# ==================================================
# ✓ Environment OK
# ==================================================
#
# ==================================================
# Model Loading Test
# ==================================================
# Loading Qwen/Qwen2.5-0.5B-Instruct...
# ✓ Model loaded on: mps:0
# ✓ Generation test passed
#   Input: Hello, how are you?
#   Output: Hello, how are you? I'm doing well, thank you...
# ==================================================
# ✓ Model Loading OK
# ==================================================

# 期待される出力 (NVIDIA CUDA - 未検証):
# ==================================================
# Environment Test
# ==================================================
# PyTorch version: 2.1.0
# MPS available: False
# CUDA available: True
# CUDA version: 11.8
# GPU: NVIDIA GeForce RTX 3090
# GPU Memory: 24.0 GB
# Transformers version: 4.36.0
# ==================================================
# ✓ Environment OK
# ==================================================

7. プロジェクト固有のセットアップ

7.1 データファイルの確認

# データファイルの存在確認
ls data/
# harmful_prompts.json
# harmless_prompts.json

# 内容の確認
python -c "
import json
with open('data/harmful_prompts.json') as f:
    prompts = json.load(f)
print(f'Harmful prompts: {len(prompts)}')

with open('data/harmless_prompts.json') as f:
    prompts = json.load(f)
print(f'Harmless prompts: {len(prompts)}')
"

7.2 出力ディレクトリの作成

# 出力ディレクトリの作成
mkdir -p outputs
mkdir -p checkpoints
mkdir -p logs

# 権限の確認
ls -la outputs/

7.3 設定ファイルの作成

# config.yaml

model:
  name: "Qwen/Qwen2.5-0.5B-Instruct"
  dtype: "auto"
  device_map: "auto"

abliteration:
  method: "projected"
  peak: 0.6
  width: 0.15
  strength: 0.9

output:
  dir: "./outputs"
  save_model: true
  save_metrics: true

logging:
  level: "INFO"
  file: "./logs/abliteration.log"

8. トラブルシューティング

8.1 よくある問題

# 問題1: pip install が失敗する
# 対策: pipをアップグレード
pip install --upgrade pip setuptools wheel

# 問題2: CUDAが認識されない
# 対策: PyTorchを再インストール
pip uninstall torch
pip install torch --index-url https://download.pytorch.org/whl/cu118

# 問題3: メモリ不足
# 対策: 小さいモデルを使用、または量子化
pip install bitsandbytes
# 4bit量子化で読み込む

# 問題4: trust_remote_code エラー
# 対策: 明示的に指定
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    trust_remote_code=True  # Qwenで必要
)

8.2 環境の確認スクリプト

# check_environment.sh

#!/bin/bash

echo "=== System Information ==="
uname -a

echo ""
echo "=== Python ==="
python3 --version
pip --version

echo ""
echo "=== GPU ==="
if command -v nvidia-smi &> /dev/null; then
    nvidia-smi --query-gpu=name,memory.total --format=csv
else
    echo "No NVIDIA GPU detected"
fi

echo ""
echo "=== Python Packages ==="
pip list | grep -E "torch|transformers|accelerate"

echo ""
echo "=== Disk Space ==="
df -h .

echo ""
echo "=== Memory ==="
free -h

9. 次のステップ

9.1 環境構築完了後のチェックリスト

□ Python 3.10+ がインストールされている
□ 仮想環境が作成・有効化されている
□ 依存関係がインストールされている
□ GPUが認識されている (GPU使用時)
□ テストモデルが読み込める
□ 簡単な推論ができる
□ データファイルが存在する
□ 出力ディレクトリが作成されている

9.2 推奨される次のアクション

1. モデルの検閲率テスト (Day 18)
2. 拒否方向の計算 (Day 19)
3. Abliterationの実行 (Day 20)
4. 結果の検証 (Day 21)

10. 今日のまとめ

環境構築ガイド:

⚠️ 動作確認環境:
- 確認済み: Mac (Apple Silicon M1-M4) + MPS バックエンド
- 未検証: Linux/Windows + NVIDIA CUDA

システム要件:
- Python 3.10+
- 16GB RAM以上(Unified Memory / システムメモリ)
- GPU: Apple Silicon (MPS) または NVIDIA GPU (CUDA - 未検証)

インストール手順:
1. Pythonのインストール
2. 仮想環境の作成
3. 依存関係のインストール
4. モデルのダウンロード
5. 動作確認

重要なパッケージ:
- torch>=2.0.0
- transformers>=4.36.0
- accelerate>=0.25.0

確認事項:
- MPS/CUDAの動作
- モデルの読み込み
- 推論テスト

明日の予告

Day 18: 検閲率テストの実行

  • テストプロンプトの準備
  • 検閲検出の実行
  • 結果の解釈

参考リンク


ナビゲーション

前の記事 Day 16: デバッグとトラブルシューティング
次の記事 Day 18: 検閲率テストの実行
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?