Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimization 코드 및 실험 #29

Open
abbymark opened this issue Dec 7, 2021 · 0 comments
Open

Optimization 코드 및 실험 #29

abbymark opened this issue Dec 7, 2021 · 0 comments

Comments

@abbymark
Copy link
Contributor

abbymark commented Dec 7, 2021

개요

모델 크기, 속도 등의 개선을 위해 몇가지 시도를 해보았습니다.

  1. Quantization
  • dynamic quantization을 통해 linear layer에 한해서 int8로 바꿨습니다.
    kobart 기준 모델 사이즈는 절반으로 줄었습니다.
    성능은 거의 비슷하거냐 약간 떨어지는 수준입니다.
    속도 향상은 관측하지 못했습니다.
    한가지 문제는 CPU에서만 작동하고 GPU에서는 작동하지 않는것으로 파악됩니다.

  • half quantization을 통해 batchnorm layer를 제외한 layer에 대해서 절반으로 data type을 변경했습니다.
    kobart 기분 모델사이즈는 dynamic quantization보다는 약간 크지만 그래도 절반정도로 줄었습니다.
    성능또한 약간 떨어지는 경향이 보였습니다.
    속도 향상은 관측하지 못했습니다.
    CPU에서 작동할시 에러가 발생합니다.

  1. Structured Pruning
    모델내에서 layer를 제거하는 식으로 진행했습니다.
    모델마다 layer 구조가 다르기에 코드화까지는 진행하지 않았습니다.
    제거하는 레이어의 수와 위치에 따라 성능차이가 예상되지만 실험은 많이 진행하지 못했습니다.

실험 내용: https://docs.google.com/spreadsheets/d/15A-oNYh_oF1yLfA0TyfFomGuSiJghhhE87Ys4PrhU8A/edit?usp=sharing

코드

performanceBenchmark.py

PeformanceBenchmark

rouge score, model size, latency에 대한 평가를 수행할수 있는 클래스

performance_test.py

평가하고자 하는 모델에 대한 체크포인트를 주게 되면 performanceBenchmark에 기반해서 평가를 해준다.
cli 에서 곧바로 수행 가능

cli 옵션

    parser.add_argument('--check_point', type=str, default='gogamza/kobart-summarization', help='model checkpoint (default: gogamza/kobart-summarization)')
    parser.add_argument('--test_dataset', type=str, default='metamong1/summarization_paper', help='test dataset (default: metamong1/summarization_paper)')
    parser.add_argument('--test_dataset_size', type=int, default=100, help='test dataset size (defualt: 100)')
    parser.add_argument('--cpu_flag', action='store_true', help='use cpu (default: gpu)')
    parser.add_argument('--test_categories', type=str, default='rouge,time,size', help='test categories seperated by , ex: time,size,rouge (defualt: rouge,time,size)')

quantization.py

dynamic quantization, half quantization을 수행한다.
cli 에서 곧바로 수행 가능

cli 옵션

    parser.add_argument('--quantization_type', type=str, default='half_quantization', help='quantization type. ex: half_quantization, dynamic_quantization (default: half_quantization)')
    parser.add_argument('--check_point', type=str, default='gogamza/kobart-summarization', help='model checkpoint (default: gogamza/kobart-summarization)')
    parser.add_argument('--test_dataset', type=str, default='metamong1/summarization_paper', help='test dataset (default: metamong1/summarization_paper)')
    parser.add_argument('--test_dataset_size', type=int, default=100, help='test dataset size (defualt: 100)')
    parser.add_argument('--cpu_flag', action='store_true', help='use cpu (default: gpu)')
    parser.add_argument('--test_categories', type=str, default='rouge,time,size', help='test categories seperated by , ex: time,size,rouge (defualt: rouge,time,size)')
    parser.add_argument('--no_test_flag', action='store_false', help='do test performance (default: False)')
    parser.add_argument('--save_dir', type=str, default='', help='save model directory (default: "" ')
@abbymark abbymark changed the title Optimizer 코드 설명 Optimization 코드 및 실험 Dec 7, 2021
@abbymark abbymark mentioned this issue Dec 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant