【人工知能】国産オープンソース大型モデルチャット AquilaChat すぐに始められる実戦&効果評価
記事ディレクトリ
- 【人工知能】国産オープンソース大型モデルチャット AquilaChat すぐに始められる実戦&効果評価
- 禅とコンピューター プログラミングの芸術: 評価の結論 - AquilaChat は、ライティング レベルでは ChatGLM-6B に似ていますが、複数のプログラミング言語でコードを記述する AquilaChat の能力はまだ比較的弱いです。。
- AquilaChat クイック スタート
禅とコンピューター プログラミングの芸術: 評価の結論 - AquilaChat は、ライティング レベルでは ChatGLM-6B に似ていますが、複数のプログラミング言語でコードを記述する AquilaChat の能力はまだ比較的弱いです。。
AquilaChat のコード作成レベルは高くなく (コード データ セットが十分にトレーニングされていないためです)、技術的な質問 (例: golang を使用してバブル ソート アルゴリズムを実装する) を行うと、一定の確率でエラーが報告されます。
File "/home/me/ai/FlagAI/flagai/model/predictor/aquila.py", line 41, in aquila_generate
next_token = sample_top_p(probs, top_p)
File "/home/me/ai/FlagAI/flagai/model/predictor/aquila.py", line 84, in sample_top_p
next_token = torch.multinomial(probs_sort, num_samples=1)
RuntimeError: probability tensor contains either `inf`, `nan` or element < 0):
入力:
{"プロンプト":"バブル ソート アルゴリズム コード"}
出力:
以下は、バブル ソートの Python コード実装です。
def bubble_sort(array):
n = len(array)
# 遍历所有数组元素
for i in range(n):
# 最后 i 个元素不需要遍历
for j in range(n-i-1):
# 如果当前元素大于下一个元素,则交换它们
if array[j] > array[j+1]:
# 交换元素
array[j], array[j+1] = array[j+1], array[j]
return array
入力:
{"prompt":"golang を使用してバブル ソート アルゴリズムを実装する"}
エラー出力:
prompt is 用golang实现冒泡排序算法
INFO: 127.0.0.1:41664 - "POST / HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 428, in run_asgi
result = await app( # type: ignore[func-returns-value]
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
return await self.app(scope, receive, send)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/applications.py", line 282, in __call__
await super().__call__(scope, receive, send)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
raise exc
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
raise exc
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
raise e
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
await self.app(scope, receive, send)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
await self.app(scope, receive, send)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
response = await func(request)
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/routing.py", line 241, in app
raw_response = await run_endpoint_function(
File "/home/me/ai/FlagAI/venv/lib/python3.10/site-packages/fastapi/routing.py", line 167, in run_endpoint_function
return await dependant.call(**values)
File "/home/me/ai/FlagAI/examples/Aquila/Aquila-chat/generate_chat.py", line 52, in create_item
out = aquila_generate(tokenizer,
File "/home/me/ai/FlagAI/flagai/model/predictor/aquila.py", line 41, in aquila_generate
next_token = sample_top_p(probs, top_p)
File "/home/me/ai/FlagAI/flagai/model/predictor/aquila.py", line 84, in sample_top_p
next_token = torch.multinomial(probs_sort, num_samples=1)
RuntimeError: probability tensor contains either `inf`, `nan` or element < 0
AquilaChat クイック スタート
環境依存のインストール
python ./setup.py install
このうち、setup.py コードは次のとおりです。
# Copyright © 2022 BAAI. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License")
from setuptools import find_packages, setup
setup(
name="flagai",
version="v1.7.1",
description="FlagAI aims to help researchers and developers to freely train and test large-scale models for NLP/CV/VL tasks.",
long_description=open("README.md", encoding="utf-8").read(),
long_description_content_type="text/markdown",
author="FlagAI-Open",
author_email="[email protected]",
url="https://github.com/FlagAI-Open/FlagAI",
packages=find_packages(exclude="tests"), # same as name
license="Apache 2.0",
include_package_data=True,
python_requires=">=3.8",
install_requires=[
'nltk==3.6.7',
'sentencepiece==0.1.96',
'boto3==1.21.42',
'pandas==1.3.5',
'jieba==0.42.1',
'scikit-learn==1.0.2',
'tensorboard==2.9.0',
'transformers==4.27.1',
'datasets==2.0.0',
'setuptools==66.0.0',
'protobuf==3.19.6',
'ftfy == 6.1.1',
'Pillow >= 9.3.0',
'einops == 0.3.0',
'diffusers == 0.7.2',
'pytorch-lightning == 1.6.5',
'taming-transformers-rom1504 == 0.0.6',
'rouge-score == 0.1.2',
'sacrebleu == 2.3.1',
]
)
関連する依存関係をインストールする
使い方・使い方
ソースコードをフォークします:
https://github.com/to-be-architect/FlagAI
1. 推論・推論
例/Aquila/Aquila-chat/generate_chat.py
import datetime
import json
import os
import torch
import uvicorn
from fastapi import FastAPI, Request
from flagai.auto_model.auto_loader import AutoLoader
from flagai.model.predictor.aquila import aquila_generate
from flagai.model.predictor.predictor import Predictor
state_dict = "/home/me/ai/FlagAI/examples/Aquila/Aquila-chat/data/"
model_name = 'aquilachat-7b'
device = torch.device('cuda', 0)
def torch_gc():
if torch.cuda.is_available():
with torch.cuda.device(device):
torch.cuda.empty_cache()
torch.cuda.ipc_collect()
app = FastAPI()
# request = {"prompt":"作为一名人工智能专家、程序员、软件架构师和 CTO,写一篇技术文章,标题:构建企业级应用程序:人工智能大模型发展历史和未来趋势,5000字,markdown格式"}
@app.post("/")
async def create_item(request: Request):
global model, tokenizer
json_post_raw = await request.json()
json_post = json.dumps(json_post_raw)
json_post_list = json.loads(json_post)
prompt = json_post_list.get('prompt')
print('-' * 80)
print(f"prompt is {
prompt}")
from cyg_conversation import default_conversation
conv = default_conversation.copy()
conv.append_message(conv.roles[0], prompt)
conv.append_message(conv.roles[1], None)
tokens = tokenizer.encode_plus(f"{
conv.get_prompt()}", None, max_length=1024)['input_ids']
tokens = tokens[1:-1]
with torch.no_grad():
out = aquila_generate(tokenizer,
model,
[prompt],
max_gen_len=2048,
temperature=0.8,
top_p=0.95,
prompts_tokens=[tokens])
now = datetime.datetime.now()
time = now.strftime("%Y-%m-%d %H:%M:%S")
answer = {
"response": out,
"status": 200,
"time": time
}
log = "[" + time + "] " + '", prompt:"' + prompt + '", response:"' + repr(out) + '"'
print(log)
torch_gc()
return answer
if __name__ == '__main__':
loader = AutoLoader("lm",
model_dir=state_dict,
model_name=model_name,
use_cache=True)
model = loader.get_model()
tokenizer = loader.get_tokenizer()
cache_dir = os.path.join(state_dict, model_name)
model.eval()
model.half()
model.cuda(device=device)
predictor = Predictor(model, tokenizer)
uvicorn.run(app, host='0.0.0.0', port=7000, workers=1)
効果試験
1 を入力してください:
{"prompt":"怎样才算是优秀的技术人:理解技术的基本原则、本质和发展演化史,写一篇文章,分章节.10000字."}
出力 1:
{ "response": "好奇心旺盛な人間と人工知能アシスタントの間のチャット。アシスタントは人間の質問に有益で詳細かつ丁寧に答えます。 ###人間: 優れた技術者になる方法: 基本を理解する技術の原理、本質、開発経緯を章に分けて記事を書く 10000語 ###アシスタント: 優秀な技術者は以下の3つの能力を備えている必要がある: 1. 技術の基本原理と本質を理解する: 優秀な技術者は、コンピュータサイエンス、プログラミング言語、アルゴリズム、データ構造など、テクノロジーの基本原理と本質を理解する。さまざまなテクノロジーと応用シナリオの長所と短所を把握し、適切な言語を選択できる必要がある。 2. 高品質な技術コードを書く:優秀な技術者は、コードの読みやすさ、保守性、拡張性などを含め、高品質な技術コードを書く能力を備えている必要があります。さまざまなプログラミング言語と開発を習得できる必要があります。 3. 新しい技術の学習と適応:優秀な技術者は、新しい技術やツールを継続的に学習し、ニーズに応じて学習し、適応できる必要があります。技術開発の動向を把握し、技術開発の方向性に沿って学習・実践できること、また、チームワークやコミュニケーション能力が高く、チームメンバーとうまく協力できることも求められます。 「優れた技術者とは、顧客とのコミュニケーションや調整を効果的に行うことができること。つまり、総合的な能力と資質を備え、プロジェクトで重要な役割を果たし、技術の発展に貢献できることが優れた技術者である必要があります。」、「ステータス」: 200 , “時間” : "2023-06-13 02:45:51" }
2 を入力してください:
あなたは人工知能の専門家、プログラマー、ソフトウェアアーキテクト、CTO であり、「人工知能の大規模モデルの開発の歴史と今後の動向」というタイトルで、深い思考と洞察を含む専門的な技術ブログ記事をワード数以上で書いてください。 5000語必要です。記事カタログは次のとおりです: ## 1. はじめに## 2. 技術原則と概念## 3. 実装手順とプロセス## 4. 例と応用## 5. 最適化と改善## 6. 結論と展望# # 7. 付録: よくある質問と回答
成果 2:
「人工知能大型モデルの開発経緯と今後の動向」
序章
人工知能モデルは、人工知能技術の中核であり、人工知能の応用の鍵です。人工知能の開発では、モデルの数が増加し、規模が拡大し続け、性能が向上し続けています。現在、人工知能モデルは主に浅いモデルと深いモデルに分けられ、深いモデルが人工知能の主流となっています。
技術原則と概念
大規模な人工知能モデルとは、複数のニューロンを含むモデルを指し、複数のニューロン間の接続を構築することで学習および予測機能を実現します。人工知能の大規模モデルの原理は、複数の畳み込み層、プーリング層、全結合層で構成される深層学習に基づく畳み込みニューラル ネットワーク (CNN) です。トレーニング プロセス中、ニューラル ネットワークは継続的な反復と最適化を通じてモデルの精度を達成します。
実装の手順とプロセス
モデルを構築する: まず、MNIST データセットなどの代表的なデータセットを構築する必要があります。次に、データセットはトレーニング セットとテスト セットに分割されます。次に、深層学習フレームワーク (TensorFlow や PyTorch など) を使用して、選択する層や各層のニューロンの数など、ニューラル ネットワークのアーキテクチャを定義します。最後に、深層学習フレームワークを使用してニューラル ネットワークをトレーニングし、必要なハイパーパラメーターの調整を行います。
検証と最適化: モデルのトレーニング プロセス中、モデルのパフォーマンスを継続的に検証し、調整する必要があります。ネットワーク構造の調整、レイヤー数の増減、ハイパーパラメーターの調整により、モデルの精度を最適化します。
応用例と例
人工知能の大型モデルは、自然言語処理、コンピューター ビジョン、音声認識などの多くの分野の中核となっています。現在、人工知能大型モデルは医療診断、自動運転、推奨システムなどで目覚ましい成果を上げている。
最適化と改善
人工知能の発展に伴い、人々はニューラルネットワーク構造の改善、モデル容量の増加、統合学習の追加など、人工知能モデルの詳細を常に探索し、改善しています。これらの改良と最適化により、モデルの精度と一般化が向上します。
結論と展望
人工知能テクノロジーの継続的な開発とモデルの継続的なアップグレードにより、人工知能の大型モデルはますます一般的になるでしょう。将来的には、人工知能の大規模モデルの応用の見通しは非常に広く、より多くの分野に適用でき、さまざまな問題をより正確かつ効率的に解決できます。ただし、大規模な人工知能モデルには、データ品質やプライバシー保護など、継続的な研究と探索が必要な課題や困難がまだいくつかあります。
付録: よくある質問と回答
Q: 高品質のニューラル ネットワークを構築するにはどうすればよいですか?
A: 高品質のニューラル ネットワークを構築するには、適切なデータセットの選択、適切なレイヤー数の選択、適切なハイパーパラメーターの調整など、複数の要素を考慮する必要があります。さらに、アンサンブル学習、オプティマイザー、正則化などを使用して、モデルの精度とパフォーマンスを向上させることができます。
Q: ニューラル ネットワーク モデルのパフォーマンスを評価するにはどうすればよいですか?
A: ニューラル ネットワーク モデルのパフォーマンスを評価するには、正解率、適合率、再現率、F1 値など、さまざまな指標を使用できます。同時に、評価指標を使用してモデルの長所と短所を理解し、実際の状況に応じて調整および最適化することもできます。
Q: データのプライバシーを保護するにはどうすればよいですか?
A: データ プライバシー保護の観点からは、ブロックチェーン テクノロジー、データの非感作化、その他のテクノロジーを使用してデータ プライバシーを保護できます。同時に、データを暗号化して認証し、データのセキュリティと信頼性を確保することもできます。
Q: スケーラブルな人工知能モデルを構築するにはどうすればよいですか?
A: スケーラブルな大規模な人工知能モデルは、レイヤー数の増加、パラメーターの増加、分散コンピューティングの使用など、さまざまな方法で設計および最適化してモデルのパフォーマンスと容量を向上させることができます。同時に、ハイブリッド アーキテクチャやアンサンブル学習などの方法を使用して、モデルの精度とパフォーマンスを向上させることもできます。
2. 教師あり微調整 (SFT)
ステップ 1: モデルの構成 / チェックポイントのセットアップ
に./checkpoints_in
新しいディレクトリを作成しますaquilachat-7b
。微調整されたチェックポイントとその他のファイル( 、、を含むaquilachat-7b
) を元のモデルに配置します。config.json
mergex.txt
vocab.json
special_tokens_map.json
aquilachat-7b
insideという名前の新しいディレクトリを作成します./checkpoints_in
。微調整されたチェックポイントと、元のモデルの他のすべてのファイル( 、、、および をaquilachat-7b
含む) をこのディレクトリに配置します。config.json
mergex.txt
vocab.json
special_tokens_map.json
ステップ 2: パラメータの変更 / パラメータの変更
cd /examples/Aquila/Aquila-sft
hostfile
ファイルを設定します。ここを参照してください。 ;hostfile
ファイルを設定します。ここを参照してください。- ファイルを設定し
bmtrain_mgpu.sh
、次のようにSCRIPT_FILE
変更しますaquila_sft.py
bmtrain_mgpu.sh
SCRIPT_FILE
aquila_sft.py
- (オプション)
Aquila-sft.yaml
ファイル内のパラメータを変更する; (オプション) ファイル内のパラメータを変更するAquila-sft.yaml
パラメータ名 パラメータ | タイプタイプ | 説明 説明 |
---|---|---|
バッチサイズ | 整数 | トレーニングの各反復でデータセットから抽出されたサンプルの数。一般に、バッチ サイズを大きくすると処理速度が向上しますが、より多くのメモリを消費する可能性があります。 |
gradient_accumulation_steps | 整数 | モデルの重みを更新する前に、複数のミニバッチにわたって勾配計算を実行する回数。主に小さな GPU メモリの場合に使用され、小さなバッチ サイズを使用すると、勾配累積 (トレーニング中の反復ごとにデータセットから抽出されたサンプルの数) を通じて大きなバッチ サイズと同じ効果を達成できます。一般に、バッチ サイズが大きいほど、処理は高速化されますが、より多くのメモリイメージを消費する可能性があります |
lr | 浮く | 制御モデルのパラメータが更新されるステップ サイズまたはレートを指します。学習率が高いとモデルが収束しない可能性があり、学習率が低いとトレーニング時間が長すぎたり、局所的な最適解に陥ったりする可能性があります (トレーニング中にモデルがパラメーターを更新するステップ サイズまたはレート)。学習率が高いとモデルが収束しない可能性があり、学習率が低いとトレーニング時間が長くなったり、局所的な最適値に囚われたりする可能性があります。 |
準備し始める | 浮く | 初期学習率と元の学習率の比率、初期学習率と元の学習率の比率 |
保存間隔 | 整数 | モデルを保存する間隔。つまり、トレーニングの反復ごとにモデルが保存されます。トレーニング時間が長い場合、保存間隔により、突然の中断やエラーによるすべてのトレーニング結果の損失を回避できます; モデルが保存される間隔、つまり、トレーニング中にエポックごとにモデルが保存される頻度。長期間にわたって間隔を保存しておくと、突然の中断やエラーによってすべてのトレーニング成果が失われるのを防ぐことができます。 |
Enable_sft_conversations_dataset_v3 | ブール | データ処理方法、データ前処理方法 |
Enable_sft_dataset_dir | str | 監視付き微調整データセット ディレクトリ、SFT データセットのデータセット ディレクトリ |
Enable_sft_dataset_file | str | 教師あり微調整データセット ファイル名; SFT データセットのファイル名 |
ステップ 3: 監視付き微調整の開始/SFT の開始
bash dist_trigger_docker.sh hostfile Aquila-sft.yaml aquilachat-7b [实验名]
次に、次の情報が出力されます。NODES_NUM
ノードの数と等しい必要があることに注意してくださいLOGFILE
。モデル実行のログ ファイルです。次の情報が出力されます。NODES_NUM
ノードの数と等しい必要があることに注意してください。LOGFILE
モデル実行のログ ファイルです。
[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-JarDpkc7-1686595867479)(…/img/info.jpg)]
トレーニングが成功する前に、異なるパラメーターを含む次の情報が表示される場合があります。
[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-gSOBDi3e-1686595867480)(…/img/info2.jpg)]
AquilaChat の概要 / AquilaChat の概要
Aquila 言語の大規模モデルは、GPT-3 と LLaMA のアーキテクチャ設計の利点を技術的に継承し、より効率的な下位レベルの演算子実装のバッチを置き換え、中国語と英語のバイリンガル トークナイザーを再設計して実装し、BMTrain 並列トレーニング方法をアップグレードします。 Aquila のトレーニングプロセスにより、Magtron+DeepSpeed zero-2 と比較してトレーニング効率が 8 倍近く高くなります。Aquila 言語の大規模モデルは、高品質の中国語と英語のコーパスに基づいて 0 からトレーニングされ、データ品質管理とさまざまなトレーニング最適化手法を通じて、より小さなデータセットとより短いトレーニング時間を実現し、他のオープンソース モデルよりも優れた結果が得られます。 . モデルのパフォーマンスが向上します。また、中国語と英語のバイリンガル知識をサポートし、商用ライセンス契約をサポートし、国内のデータ コンプライアンス要件を満たす初の大規模なオープンソース言語モデルでもあります。
Aquila 言語モデルは、GPT-3 と LLaMA のアーキテクチャ設計の利点を継承し、より効率的な基礎となる演算子実装のバッチを置き換え、中国語と英語のバイリンガルをサポートするためにトークナイザーを再設計します。BMTrain 並列トレーニング方法をアップグレードし、Aquila のトレーニング プロセスにおいて Magtron+DeepSpeed ZeRO-2 のほぼ 8 倍のトレーニング効率を達成しました。Aquila 言語モデルは、高品質の中国語と英語のコーパスに基づいてゼロからトレーニングされています。データ品質管理とさまざまなトレーニング最適化手法により、より小さなデータセットとより短いトレーニング時間で他のオープンソース モデルよりも優れたパフォーマンスを実現します。また、中国語、英語、知識、商用ライセンスをサポートし、国内のデータ規制に準拠する初の大規模なオープンソース言語モデルでもあります。
AquilaChat-7B は、Aquila-7B モデルをベースに SFT 微調整を行った後、中国語と英語をサポートするバイリンガル会話言語モデルです。Zhiyuan Research Instituteが開発したAquilaChat-7Bモデル
AquilaChat-7B は、中国語と英語の対話をサポートする会話言語モデルです。Aquila-7B モデルをベースにしており、SFT を使用して微調整されています。AquilaChat-7B モデルは、北京人工知能アカデミーによって開発されました。
当社のモデルは、 Huggingface プラットフォームもサポートしています。
ハギングフェイスもサポートしています。
AquilaChat モデルは主に基本モデルの機能を検証するためのものであり、ご自身のニーズに応じてモデルを使用、修正、商品化することができますが、すべての国の法律と規制を遵守し、Aquila シリーズのソースを提供する必要がありますモデルおよび Aquila シリーズ モデルをサードパーティ ユーザーに提供する契約のコピー。
AquilaChat モデルは主に、基本モデルの機能を検証するために開発されました。ニーズに応じてモデルを使用、変更、商品化することができますが、あなたの国の適用されるすべての法律と規制に従う必要があります。さらに、Aquila シリーズ モデルのソースと Aquila シリーズ モデル ライセンスのコピーをサードパーティ ユーザーに提供する必要があります。
Aquila モデルの詳細 / Aquila モデルの詳細
モデル | 州/州 | 商用利用は可能ですか? | 使用されるグラフィックカード/GPU |
---|---|---|---|
アクイラ-7b | 発行済み | ✅ | Nvidia-A100 |
アクイラチャット-7B | 発行済み | ✅ | Nvidia-A100 |
アクイラコード-7B-NV | 発行済み | ✅ | Nvidia-A100 |
アクイラコード-7B-TS | 発行済み | ✅ | 天書-BI-V100 |
アクイラ-33B | 乞うご期待 | ✅ | Nvidia-A100 |
アクイラチャット-33B | 乞うご期待 | ✅ | Nvidia-A100 |
モデルのトレーニングを支援するために、フラッシュ アテンションメソッドの参照や一部の中間計算の置き換え、RMSNorm の使用など、より効率的な一連の基礎となる演算子を使用します。これに基づいて、BMtrainテクノロジーを軽量並列トレーニングに適用しました。これは、データ並列処理、ZeRO (ゼロ冗長オプティマイザー)、オプティマイザー オフロード、チェックポイントと操作の融合、通信とコンピューティングのオーバーラップなどの方法を使用します。モデル トレーニング プロセスを最適化します。
Aquila モデルで使用されるトークナイザーは、私たちが一からトレーニングしたもので、中国語と英語の両方をサポートしています。英語、中国語、コード データを扱うときは、さまざまなトークナイザーを使用して 10,000 個のサンプルを抽出しました。次に、各サンプルのトークンの数を数え、表に記録しました。Aquila トークナイザーと他のトークナイザーのパラメーターを以下の表で比較します。
モデルのトレーニングを支援するために、フラッシュ アテンションから参照されるメソッドや一部の中間計算の置き換え、RMSNorm の使用など、一連のより効率的な低レベル演算子を使用しました。この基盤に基づいて、軽量並列トレーニングにBMtrainを適用しました。これは、データ並列処理、ZeRO (ゼロ冗長オプティマイザー)、オプティマイザー オフロード、チェックポイントと操作の融合、通信と計算のオーバーラップなどの方法を利用して、モデル トレーニング プロセスを最適化します。
Aquila モデルで使用されるトークナイザーは、私たちが一からトレーニングしたもので、英語と中国語の両方をサポートしています。異なるトークナイザーを使用して、英語、中国語、コード データからそれぞれ 1 万個のデータ サンプルを抽出し、各サンプルのトークン数を取得し、テーブルに組み込みました。このトークナイザーのパラメーターは、以下の表で他のトークナイザーのパラメーターと比較されています。
モデル | 語彙サイズ/語彙サイズ | 説明/メモ | 英語のトークンの平均量/平均トークン(英語) | 中国の平均トークン量/平均トークン(中国) | コードの平均トークン量/平均トークン(コード) |
---|---|---|---|---|---|
GPT2 | 50527 | BPE | 1717 | 1764年 | 2323 |
ラマ | 32000 | sp(bpe) | 1805年 | 1257 | 1970年 |
わし座 | 100000 | BPE | 1575年 | 477 | 1679年 |
トレーニングデータセット/トレーニングデータ
私たちは一連の高品質の中国語と英語のデータセットを使用して対話言語モデルのトレーニングと微調整を行い、常に更新と反復を行っています。
私たちは一連の高品質の中国語と英語のデータセットを使用して会話言語モデルをトレーニングおよび微調整し、反復を通じてモデルを継続的に更新しました。
さらに、テキスト生成と画像編集という 2 つのマルチモーダル コマンドもサポートしています。データセット形式については、こちらを参照してください。
テキストから画像への生成と画像編集という 2 つのマルチモーダル命令のサポートが追加されました。データセットの形式については、こちらを参照してください。
証明書/ライセンス
AquilaChat
この一連のオープン ソース モデルは、 Zhiyuan、元のコードはApache License 2.0に基づいています。
AquilaChat
オープンソース モデルは、BAAI Aquila モデル ライセンス契約に基づいてライセンスされています。ソース コードはApache License 2.0に基づいています。