Đánh giá mô hình AI với OpenCompass: API và cục bộ

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
    )
]

Thẻ: OpenCompass InternLM LMDeploy HuggingFace API-Evaluation

Đăng vào ngày 3 tháng 6 lúc 03:11