OpenCompass hỗ trợ hai phương thức đánh giá: thông qua API và trực tiếp từ mô hình cục bộ. Phương pháp API phù hợp với các mô hình được triển khai dưới dạng dịch vụ, trong khi đánh giá cục bộ dành cho các mô hình có sẵn trọng số.
Thiết lập môi trường
conda create -n compass python=3.10
conda activate compass
cd /root
git clone -b 0.3.3 https://github.com/open-compass/opencompass
cd opencompass
pip install -e .
pip install -r requirements.txt
pip install huggingface_hub==0.25.2
Đánh giá qua API
Giả sử bạn đã có khóa API và endpoint từ nền tảng PuYu:
export MY_API_KEY=your_api_key_here
Tạo file cấu hình /root/opencompass/opencompass/configs/models/openai/custom_puyu.py:
import os
from opencompass.models import OpenAISDK
api_endpoint = 'https://internlm-chat.intern-ai.org.cn/puyu/api/v1/'
api_token = os.getenv('MY_API_KEY')
models = [
dict(
type=OpenAISDK,
path='internlm2.5-latest',
key=api_token,
openai_api_base=api_endpoint,
rpm_verbose=True,
query_per_second=0.16,
max_out_len=1024,
max_seq_len=4096,
temperature=0.01,
batch_size=1,
retry=3
)
]
Tạo dataset mẫu tại opencompass/configs/datasets/demo/quick_cmmlu.py:
from mmengine import read_base
with read_base():
from ..cmmlu.cmmlu_gen_c13365 import cmmlu_datasets
for dataset in cmmlu_datasets:
dataset['abbr'] = 'test_' + dataset['abbr']
dataset['reader_cfg']['test_range'] = '[0:1]'
Chạy thử nghiệm:
python run.py --models custom_puyu.py --datasets quick_cmmlu.py --debug
Đánh giá mô hình cục bộ
Cài đặt phụ thuộc:
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
apt-get update && apt-get install cmake -y
pip install protobuf==4.25.3 huggingface-hub==0.23.2
Tải dữ liệu:
cp /share/temp/datasets/OpenCompassData-core-20231110.zip ./
unzip OpenCompassData-core-20231110.zip
Chỉnh sửa cấu hình mô hình tại configs/models/hf_internlm/local_internlm_1_8b.py:
from opencompass.models import HuggingFacewithChatTemplate
models = [
dict(
type=HuggingFacewithChatTemplate,
abbr='local-internlm-1.8b',
path='/share/new_models/Shanghai_AI_Laboratory/internlm2_5-1_8b-chat/',
max_out_len=2048,
batch_size=8,
run_cfg=dict(num_gpus=1)
)
]
Thực thi đánh giá:
python run.py --datasets ceval_gen --models local_internlm_1_8b --debug
Triển khai cục bộ thành API để đánh giá
Khởi động server API trong terminal riêng:
pip install lmdeploy==0.6.1 openai==1.52.0
lmdeploy serve api_server /share/new_models/Shanghai_AI_Laboratory/internlm2_5-1_8b-chat/ --server-port 23333
Kiểm tra tên mô hình đăng ký:
from openai import OpenAI
client = OpenAI(api_key='any_string', base_url="http://0.0.0.0:23333/v1")
model_id = client.models.list().data[0].id
print(model_id)
Tạo file cấu hình API configs/models/hf_internlm/local_as_api.py:
from opencompass.models import OpenAI
role_template = dict(round=[
dict(role='USER', api_role='USER'),
dict(role='ASSISTANT', api_role='ASSISTANT', generate=True),
])
models = [
dict(
abbr='Local-InternLM-API',
type=OpenAI,
path='/share/new_models/Shanghai_AI_Laboratory/internlm2_5-1_8b-chat/',
key='any_key',
openai_api_base='http://0.0.0.0:23333/v1/chat/completions',
meta_template=role_template,
query_per_second=1,
max_out_len=2048,
max_seq_len=4096,
batch_size=8
)
]