Skip to content

Commit 0845563

Browse files
authored
Merge pull request #1 from matsuolab/master
oll
2 parents 918e618 + 7950e32 commit 0845563

24 files changed

+7351
-0
lines changed

.github/workflows/test.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: ML Pipeline CI
2+
3+
on:
4+
# push:
5+
# branches: [ main, master ]
6+
pull_request:
7+
branches: [ main, master ]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v3
14+
15+
- name: Set up Python
16+
uses: actions/setup-python@v4
17+
with:
18+
python-version: '3.10'
19+
20+
- name: Install dependencies
21+
run: |
22+
python -m pip install --upgrade pip
23+
pip install pytest great_expectations pandas scikit-learn flake8 black mypy pytest-cov
24+
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
25+
26+
- name: Lint with flake8
27+
run: |
28+
flake8 day5/演習3 --count --select=E9,F63,F7,F82 --show-source --statistics
29+
flake8 day5/演習3 --count --exit-zero --max-complexity=10 --max-line-length=88 --statistics
30+
31+
- name: Format check with black
32+
run: |
33+
black --check day5/演習3
34+
35+
- name: Run data tests
36+
run: |
37+
pytest day5/演習3/tests/test_data.py -v
38+
39+
- name: Run model tests
40+
run: |
41+
pytest day5/演習3/tests/test_model.py -v

day3/README.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# day3 演習用ディレクトリ
2+
3+
第3回「機械学習システムの改善」に関する演習用のディレクトリです。
4+
5+
# 演習の目的
6+
7+
本演習コンテンツでは、技術的な用語や仕組み(例:RAG におけるチャンク処理など)の詳細な理解を目的とするのではなく、AI の性能を向上させるための方法を実際に体験することを主眼としています。
8+
この体験を通じて、複数のデータソースの扱いや、AI に対する適切な入力・文脈の与え方など、実践的なスキルへの理解を深めることを目的とします。
9+
10+
# 演習の内容
11+
主な演習の流れは以下のようになっています。
12+
13+
1. ベースモデルのそのままの状態で質問に回答させる
14+
2. 講義の文字起こしデータを使う
15+
3. チャンク化を行い、文字情報を分割する
16+
4. Rerankにより、質問に関連する内容を取り出せるようにする
17+
5. さらに改善方法を検討する
18+
19+
演習の詳細はノートブックに記載されています。
20+
21+
演習には、「Google Colab」を使うことを想定しています。
22+
23+
講義内の演習の時間では、ディレクトリ内の「ai_engineering_03.ipynb」を使用しています。
24+
このノートブックでは、Google ColabのL4というGPUを使用する想定で作られています。
25+
26+
- [Open with Colab(GPU:L4)](https://colab.research.google.com/github/matsuolab/lecture-ai-engineering/blob/master/day3/ai_engineering_03.ipynb)
27+
28+
## 注意事項
29+
L4はGoogle Colabの無料利用では選択できない可能性があります。
30+
31+
演習として説明を行う都合上、講師の環境では「L4」を使用しますが、受講生の方で「L4」を使用できない場合は、
32+
無料で利用可能な「T4」向けのノートブック「ai_engineering_03_T4.ipynb」も用意したのでこちらを使用して演習を行なってください。
33+
34+
- [Open with Colab(GPU:T4)](https://colab.research.google.com/github/matsuolab/lecture-ai-engineering/blob/master/day3/ai_engineering_03_T4.ipynb)
35+
36+
演習の大まかな流れはどちらのノートブックでも同じように体験できるように構成していますが、細かい部分で内容が異なる場合がある点はご了承をお願いします。
37+
(主な違いとしては、T4のノートブックで利用するモデルの方がサイズが小さいことと、演習として実際に試せる内容が少ない(「5. さらに改善方法を検討する」はGPUメモリが不足して実行できない)などの違いがあります。)
38+
39+
# 事前準備
40+
事前準備の内容は、L4向けのノートブックと、T4向けのノートブックで異なります。
41+
42+
使うノートブックに合わせて事前準備を行なってください。
43+
44+
## L4向けのノートブックの場合
45+
1. Huggingfaceのアクセストークンの取得
46+
ノートブック内でHugginfaceのアクセストークンを使用します。
47+
48+
https://huggingface.co/settings/tokens
49+
50+
2. Llama3モデルのライセンス
51+
演習ではLlama3を利用する予定です。ライセンス登録など必要な準備を済ませておいてください。
52+
53+
Huggingfaceのアカウントでログインした状態で以下のモデルカードのページにアクセスし、「META LLAMA 3 COMMUNITY LICENSE AGREEMENT」からライセンスへの同意をする。
54+
55+
https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct
56+
57+
## T4向けのノートブックの場合
58+
1. Huggingfaceのアクセストークンの取得
59+
ノートブック内でHugginfaceのアクセストークンを使用します。
60+
61+
https://huggingface.co/settings/tokens
62+
63+
2. Gemma2モデルのライセンス
64+
day1で使用したモデルと同じなので、day1で既にライセンスに同意している方は以下の手順はスキップできます。
65+
66+
Huggingfaceのアカウントでログインした状態で以下のモデルカードのページにアクセスし、「Access Gemma on Hugging Face」からライセンスへの同意をする。
67+
68+
https://huggingface.co/google/gemma-2-2b-jpn-it
69+
70+
# 演習に関連する参考情報
71+
72+
## データを綺麗にするには
73+
- 会話データの場合、文書として書かれたデータよりもデータが扱いにくい場合が多いです。そのため、データをクレンジングすると扱いやすいデータになることが多いです。
74+
- 演習の内容にもある通り、誤字や文の区切りなどを調整する。
75+
- 不要な情報を減らす(生成したい内容や目的に合わせて調整する)。
76+
- 重複した文章の削除する。
77+
- 表現方法の統一する(少し違う言い回しに変えるなどを会話においては行うことがある)。
78+
79+
## データソースを追加するには
80+
- テキスト生成モデルに対してデータソースを使用する場合、データをモデルにプロンプトとして投入する都合により、データを最終的にはテキストデータに変換することになります。
81+
- そのため、PDFやWeb上のHTML等をテキストに変換(パース)する方法についても調べてみましょう。
82+
- PDFやWebなどのデータを取得したり、利用したりする際には、データの提供元の利用規約等を確認し、準拠した上で利用するように習慣を作りましょう。
83+
- PDFの例
84+
- https://pypi.org/project/PyPDF2/
85+
- https://pypi.org/project/pdfminer.six/
86+
- HTMLの例
87+
- https://docs.python.org/ja/3/library/html.parser.html
88+
- SaaSとしてWebデータをLLMが処理しやすくするAPIを提供している企業もあります。
89+
- [https://jina.ai](https://jina.ai/)
90+
- 使用したいWebページのURLをAPIに設定してリクエストを投げると、Webページ上のテキスト等をLLMが処理しやすい形に変換してくれたりします(HTMLのパースをする手間を肩代わりしてくれる)。
91+
92+
## モデルを変えるとどうなるか
93+
- T4版のノートブックでは、ベースモデルとしてgemma2を使っています。
94+
- Llama3よりもパラメータ数が少なく、モデルもLlama3と比べ古いので、生成文は少しぎこちない印象はあります。gemma2ではsystemプロンプトを使えないため、推論のさせ方もLlamaと比べて少し異なっています。
95+
- 埋め込みモデルを変えるという考え方もあります。埋め込み時の結果が変わるので、参考資料としてプロンプトに入ってくる内容が変わることが考えられます。
96+
97+
## 発展的な手法にどのようなものがあるか
98+
- RAGという1つのテーマだけでも様々なアプローチがあります。
99+
- https://github.com/jxzhangjhu/Awesome-LLM-RAG

0 commit comments

Comments
 (0)