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: 検閲率テストの実行 |