본문 바로가기

Dev Notes/ML6

[debug] tokenizer special token 추가 시 임베딩 사이즈 조절 하기 tokenizer = AutoTokenizer.from_pretrained(base_model)    tokenizer.add_special_tokens({'additional_special_tokens': special_tokens})    padding_value = tokenizer.pad_token_id    print("Trying to load model with transformers...")    query_enc = QueryEncoder(base_model=base_model)    passage_enc = PassageEncoder(base_model=base_model)    #### special token을 추가하면 resize_token_embeddings를 해줘야 함    q.. 2024. 7. 30.
Deepspeed 배치 사이즈 관련 파라미터 정리 Deepspeed를 활용하여 multi-gpu로 분산 훈련을 진행할 때 배치 사이즈의 개념과 파라미터로 들어가는 값들에 대해서 정리해보았다. https://www.deepspeed.ai/docs/config-json/#batch-size-related-parameters DeepSpeed Configuration JSON DeepSpeed is a deep learning optimization library that makes distributed training easy, efficient, and effective. www.deepspeed.ai train_batch_size = (train_micro_batch_size_per_gpu) * (gradient_accumulation) * (numbe.. 2023. 8. 20.
머신러닝 프로덕션 코드를 구성하는 방법 본 포스트에서는 머신러닝 프로젝트에서 사용되는 프로덕션 코드가 어떻게 구성되어야하고 어떤 것들에 주의하는지를 소개하고자 한다. 프로덕션 코드는 실험을 위한 연구용 코드와 달리 사용자에게의 배포를 위한 코드를 일컫는다. 프로덕션 코드는 테스트, 유지보수, 확장성, 성능, 재생산성을 고려하여 작성되어야 한다. 프로덕션 코드와 연구용 코드의 큰 파이프라인은 비슷하다: 라이브러리와 데이터를 불러오고, 데이터를 훈련/테스트 데이터로 나누고, 데이터 정제를 하고, 모델 훈련을 하고, 모델 평가를 하고, 훈련한 모델을 저장하고, 테스트 데이터에 대해 예측을 한다. 프로덕션 코드를 어떻게 구조화를 하는가? 1. Convention 선택하기 버전 관리(versioning): 버전 관리 시스템을 사용하여 코드 변경 사항 .. 2023. 6. 25.
C++에서 ONNX runtime 사용하기 C++에서 ONNX runtime을 사용 방법에 대한 설명을 듣고 정리해보았습니다. ONNX runtime를 사용하는 이유? Open Neural Network Exchange (ONNX) → 프레임워크 상호운용성 및 하드웨어 최적화 접근성을 위한 라이브러리 ML 모델의 공통 표준 포맷 Tensorflow, Keras, Pytorch 모델 → onnx export 가능 ML 모델의 제품화, 라이브러리화, API화 ML 모델 암호화 (*onnx로 포맷 변환은 메모리 누수 등의 문제와는 관련없음, *.pt, *.pth등의 파일을 표준 포맷을 변환하는 것) C++로 ONNX runtime 사용하기 export된 onnx 모델 경로에 위치(encoder.onnx 등의 *.onnx 포맷의 변환된 형태) Onnx .. 2023. 6. 11.
Torchserve 사용 방법과 경로 설정 Torchserve는 프로덕션 환경에서 Pytorch 모델을 쉽고 빠르게 서빙하고 최적화하기 위한 툴이다. 본 포스트에서는 도커나 아나콘다 등의 환경은 배제하고 torchserve라는 툴의 원론적인 사용 방법과 문제가 생겼었던 경로 설정에 대해서 정리해보고자 한다. 1. 준비물 Model artifacts .bin,.pt,.pth 등의 모델 가중치 파일 config.json와 같은 형태의 모델 아키텍쳐 정보 model.save_pretrained('pytorch_model.bin'), torch.save(model.state_dict(), PATH) 등의 방법으로 저장한다. Tokenizer artifacts tokenizer_config.json, vocab.json, merge.txt,.. 등의 토크.. 2023. 4. 20.
[MLops 기초] 프로덕션 환경에서의 머신러닝 시스템이란? Machine Learning 시스템이란? 머신러닝이란 데이터로부터 복잡한 패턴을 학습하여 이를 기반으로 처음 보는 데이터에 대해서 예측하는 방법론이다. 패턴이 반복적이며, 잘못된 예측에 대한 비용이 적고, 대량의 예측을 해야하는 문제들에 적합하다. 연구 환경과 프로덕션 환경에서 어떻게 다른가? 연구 환경에서의 머신러닝/딥러닝 모델은 고정된 벤치마크 데이터셋에 대해서 State-of-art 성능을 도달하도록 모델을 훈련하는 것이 최종 목표다. 하지만 프로덕션 환경에서는 끊임없이 변하고 생겨나는 데이터들에 대해서 빠르게 예측하는 것에 더 초점을 둔다. 연구 환경에서는 모델이 아무리 복잡하더라도 정확도가 1프로 올라간다면 매우 큰 성과겠지만, 프로덕션 환경에서는 성능이 조금 부족하더라도 자원과 비용이 덜 들.. 2023. 4. 18.