File size: 8,934 Bytes
e885b12
b4ab683
 
 
 
e885b12
 
 
 
 
 
 
 
25c4843
b4ab683
e885b12
b4ab683
e885b12
b4ab683
 
e885b12
b4ab683
 
e885b12
b4ab683
 
e885b12
b4ab683
 
e885b12
 
 
b4ab683
 
e885b12
b4ab683
e885b12
b4ab683
 
 
 
 
e885b12
 
 
 
d62ede2
fc671fd
e885b12
 
 
b4ab683
 
 
 
 
 
 
 
e885b12
b4ab683
 
 
e885b12
0af5c7b
 
 
 
 
 
 
 
5503b6a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0af5c7b
791b156
e885b12
791b156
e885b12
feedbc6
 
 
 
 
e885b12
392c1ec
 
 
 
 
 
 
 
 
 
 
feedbc6
 
 
 
e885b12
043bac4
 
 
 
 
 
 
7c87e0a
 
 
 
 
 
 
4161346
 
 
 
 
 
 
25a425f
4161346
e885b12
d62ede2
e885b12
d62ede2
 
e885b12
 
791b156
 
 
 
 
 
 
fc671fd
e885b12
5503b6a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
---
title: Llama-finetune-sandbox
emoji: 🦙
colorFrom: blue
colorTo: purple
sdk: streamlit
sdk_version: 1.39.0
app_file: app.py
pinned: false
license: mit
---

<p align="center">
  <img src="https://raw.githubusercontent.com/Sunwood-ai-labs/Llama-finetune-sandbox/refs/heads/main/docs/Llama-finetune-sandbox.png" width="100%">
  <h1 align="center">🌟 Llama-finetune-sandbox 🌟</h1>
</p>

<p align="center">
  <a href="https://github.com/Sunwood-ai-labs/Llama-finetune-sandbox">
    <img alt="GitHub Repo" src="https://img.shields.io/badge/github-Llama--finetune--sandbox-blue?logo=github">
  </a>
  <a href="https://github.com/Sunwood-ai-labs/Llama-finetune-sandbox/blob/main/LICENSE">
    <img alt="License" src="https://img.shields.io/github/license/Sunwood-ai-labs/Llama-finetune-sandbox?color=green">
  </a>
  <a href="https://github.com/Sunwood-ai-labs/Llama-finetune-sandbox/stargazers">
    <img alt="GitHub stars" src="https://img.shields.io/github/stars/Sunwood-ai-labs/Llama-finetune-sandbox?style=social">
  </a>
  <a href="https://github.com/Sunwood-ai-labs/Llama-finetune-sandbox/releases">
    <img alt="GitHub release" src="https://img.shields.io/github/v/release/Sunwood-ai-labs/Llama-finetune-sandbox?include_prereleases&style=flat-square">
  </a>
</p>

<h2 align="center">
  ~ Llamaモデルのファインチューニング実験環境 ~
</h2>

<p align="center">
  <img src="https://img.shields.io/badge/Python-3.8%2B-blue?style=for-the-badge&logo=python" alt="Python">
  <img src="https://img.shields.io/badge/PyTorch-2.0%2B-red?style=for-the-badge&logo=pytorch" alt="PyTorch">
  <img src="https://img.shields.io/badge/HuggingFace-yellow?style=for-the-badge&logo=huggingface" alt="HuggingFace">
  <img src="https://img.shields.io/badge/Docker-blue?style=for-the-badge&logo=docker" alt="Docker">
  <img src="https://img.shields.io/badge/CUDA-11.7%2B-green?style=for-the-badge&logo=nvidia" alt="CUDA">
</p>

## 🚀 プロジェクト概要

**Llama-finetune-sandbox**は、Llamaモデルのファインチューニングを実験的に学習・検証できる環境です。様々なファインチューニング手法を試し、モデルのカスタマイズや性能評価を行うことができます。初学者から研究者まで、幅広いユーザーのニーズに対応します。バージョン0.7.0では、ドキュメントの更新と、Unslothを用いた高速推論実装ガイドの追加を行いました。


## ✨ 主な機能

1. **多様なファインチューニング手法**:
   - LoRA (Low-Rank Adaptation)
   - QLoRA (Quantized LoRA)
   
2. **柔軟なモデル設定**:
   - カスタム可能な最大シーケンス長
   - 多様な量子化オプション
   - 複数のアテンションメカニズム

3. **実験環境の整備**:
   - メモリ使用量の最適化
   - 実験結果の可視化

4. **コンテキストアウェアリフレクティブQA生成システム**:
    - Wikipediaデータから高品質なQ&Aデータセットを生成します。
    - LLMを活用し、文脈を考慮した質問と回答の生成、品質評価、段階的な改善を自動で行います。
    - 事実性、質問の質、回答の完全性を数値化して評価し、段階的に改善を行うリフレクティブなアプローチを採用しています。
    - 環境構築、モデル選択、データ前処理、Q&Aペア生成、品質評価、改善プロセスを網羅したコードと解説を提供しています。
    - `litellm`, `wikipedia`, `transformers`などのライブラリを使用しています。
    - 出力されたQ&AペアはJSON形式で保存され、Hugging Face Hubへのアップロードも容易に行えます。

5. **LLM評価システム**:
    - LLMの回答品質を自動的に評価するシステムです。
    - 質問、模範解答、LLMの回答を4段階で評価し、詳細な評価レポートを生成します。
    - エラーハンドリング、リトライ機能、ログ機能、カスタマイズ可能な評価基準、CSVとHTML形式でのレポート生成機能を備えています。
    - HuggingFace Hubへのアップロード機能も備えています。


## 🔧 使用方法

本リポジトリ内のノートブックを参照してください。

## 📦 インストール手順

`requirements.txt`を参照し、必要なパッケージをインストールしてください。


## 📚 実装例

本リポジトリには以下の実装例が含まれています:

### Unslothを使用した高速ファインチューニング
 - Llama-3.2-1B/3Bモデルの高速ファインチューニング実装  
   - → 詳細は [`Llama_3_2_1B+3B_Conversational_+_2x_faster_finetuning_JP.md`](sandbox/Llama_3_2_1B+3B_Conversational_+_2x_faster_finetuning_JP.md) をご参照ください。
   - → [マークダウン形式からノートブック形式への変換はこちらを使用してください](https://huggingface.co/spaces/MakiAi/JupytextWebUI)
 - [📒ノートブックはこちら](https://colab.research.google.com/drive/1AjtWF2vOEwzIoCMmlQfSTYCVgy4Y78Wi?usp=sharing)

### Unslothを使用した高速推論
 - Llama-3.2モデルの高速推論実装
   - → 詳細は [`Unsloth_inference_llama3-2.md`](sandbox/Unsloth_inference_llama3-2.md) をご参照ください。
   - → Unslothを使用したLlama-3.2モデルの効率的な推論処理の実装
 - [📒ノートブックはこちら](https://colab.research.google.com/drive/1FkAYiX2fbGPTRUopYw39Qt5UE2tWJRpa?usp=sharing)

 - LLM-JPモデルの高速推論実装
   - → 詳細は [`Unsloth_inference_llm_jp.md`](sandbox/Unsloth_inference_llm_jp.md) をご参照ください。
   - → 日本語LLMの高速推論処理の実装とパフォーマンス最適化
 - [📒ノートブックはこちら](https://colab.research.google.com/drive/1lbMKv7NzXQ1ynCg7DGQ6PcCFPK-zlSEG?usp=sharing)

### OllamaとLiteLLMを使用した効率的なモデル運用
 - Google Colabでのセットアップと運用ガイド
 - → 詳細は [`efficient-ollama-colab-setup-with-litellm-guide.md`](sandbox/efficient-ollama-colab-setup-with-litellm-guide.md) をご参照ください。
 - [📒ノートブックはこちら](https://colab.research.google.com/drive/1buTPds1Go1NbZOLlpG94VG22GyK-F4GW?usp=sharing)

### WikipediaデータからのQ&Aデータセット生成(センテンスプールQA方式)
- センテンスプールQA方式による高品質Q&Aデータセット生成
  - → 句点区切りの文をプールして文脈を保持しながらQ&Aペアを生成する新しいデータセット作成手法
  - → チャンクサイズを柔軟に調整可能(デフォルト200文字)で、用途に応じた最適な文脈範囲でQ&Aペアを生成
  - → 詳細は [`wikipedia-qa-dataset-generator.md`](sandbox/wikipedia-qa-dataset-generator.md) をご参照ください。
- [📒ノートブックはこちら](https://colab.research.google.com/drive/1mmK5vxUzjk3lI6OnEPrQqyjSzqsEoXpk?usp=sharing)

### コンテキストアウェアリフレクティブQA生成システム
- リフレクティブな品質改善を行うQ&Aデータセット生成
  - → 生成したQ&Aペアの品質を自動評価し、段階的に改善を行う新方式
  - → 事実性、質問品質、回答の完全性を数値化して評価
  - → 文脈情報を活用した高精度な質問生成と回答の整合性チェック
  - → 詳細は [`context_aware_Reflexive_qa_generator_V2.md`](sandbox/context_aware_Reflexive_qa_generator_V2.md) をご参照ください。
- [📒ノートブックはこちら](https://colab.research.google.com/drive/1OYdgAuXHbl-0LUJgkLl_VqknaAEmAm0S?usp=sharing)

### LLM評価システム (LLMs as a Judge)
- LLMを評価者として活用する高度な品質評価システム
  - → 質問、模範解答、LLMの回答を4段階スケールで自動評価
  - → エラーハンドリングとリトライ機能による堅牢な設計
  - → CSV、HTML形式での詳細な評価レポート生成
  - → 詳細は [`LLMs_as_a_Judge_TOHO_V2.md`](sandbox/LLMs_as_a_Judge_TOHO_V2.md) をご参照ください。
- [📒ノートブックはこちら](https://colab.research.google.com/drive/1Zjw3sOMa2v5RFD8dFfxMZ4NDGFoQOL7s?usp=sharing)


## 🆕 最新情報 (v0.7.0)

- **Unslothを用いた高速推論実装ガイドの追加**: Llama-3.2モデルとLLM-JPモデルの高速推論実装に関する情報、各モデルの使用方法、Colabノートブックへのリンクを追加しました。
- ドキュメントの更新


## 🤝 コントリビューション

- 新しいファインチューニング手法の実装
- バグ修正や機能改善
- ドキュメントの改善
- 使用例の追加

## 📄 ライセンス

このプロジェクトはMITライセンスの下で公開されています。