- Added comprehensive plans for training a LightGBM model on M4 Mac Mini and deploying it to an LXC container. - Created scripts for model training, deployment, and a full pipeline execution. - Enhanced model transfer with error handling and logging for better tracking. - Introduced profiling for training time analysis and dataset generation optimization. Made-with: Cursor
60 lines
2.1 KiB
Bash
Executable File
60 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 맥미니에서 학습한 모델을 LXC 컨테이너 볼륨 경로로 전송한다.
|
|
# 사용법: bash scripts/deploy_model.sh [LXC_HOST] [LXC_MODELS_PATH]
|
|
#
|
|
# 예시:
|
|
# bash scripts/deploy_model.sh 10.1.10.28 /path/to/cointrader/models
|
|
# bash scripts/deploy_model.sh root@10.1.10.28 /root/cointrader/models
|
|
|
|
set -euo pipefail
|
|
|
|
LXC_HOST="${1:-root@10.1.10.24}"
|
|
LXC_MODELS_PATH="${2:-/root/cointrader/models}"
|
|
LOCAL_MODEL="models/lgbm_filter.pkl"
|
|
LOCAL_LOG="models/training_log.json"
|
|
|
|
if [[ ! -f "$LOCAL_MODEL" ]]; then
|
|
echo "[오류] 모델 파일 없음: $LOCAL_MODEL"
|
|
echo "먼저 python scripts/train_model.py 를 실행하세요."
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== 모델 전송 시작 ==="
|
|
echo " 대상: ${LXC_HOST}:${LXC_MODELS_PATH}"
|
|
echo " 파일: $LOCAL_MODEL"
|
|
|
|
# 기존 모델을 prev로 백업 (원격)
|
|
ssh "${LXC_HOST}" "
|
|
if [ -f '${LXC_MODELS_PATH}/lgbm_filter.pkl' ]; then
|
|
cp '${LXC_MODELS_PATH}/lgbm_filter.pkl' '${LXC_MODELS_PATH}/lgbm_filter_prev.pkl'
|
|
echo ' 기존 모델 백업 완료'
|
|
fi
|
|
mkdir -p '${LXC_MODELS_PATH}'
|
|
"
|
|
|
|
# 모델 파일 전송 (rsync 우선, 없으면 scp 폴백)
|
|
if command -v rsync &>/dev/null && ssh "${LXC_HOST}" "command -v rsync" &>/dev/null; then
|
|
rsync -avz --progress \
|
|
"$LOCAL_MODEL" \
|
|
"${LXC_HOST}:${LXC_MODELS_PATH}/lgbm_filter.pkl"
|
|
else
|
|
echo " rsync 없음 → scp 사용"
|
|
scp "$LOCAL_MODEL" "${LXC_HOST}:${LXC_MODELS_PATH}/lgbm_filter.pkl"
|
|
fi
|
|
|
|
# 학습 로그도 함께 전송 (있을 경우)
|
|
if [[ -f "$LOCAL_LOG" ]]; then
|
|
if command -v rsync &>/dev/null && ssh "${LXC_HOST}" "command -v rsync" &>/dev/null; then
|
|
rsync -avz "$LOCAL_LOG" "${LXC_HOST}:${LXC_MODELS_PATH}/training_log.json"
|
|
else
|
|
scp "$LOCAL_LOG" "${LXC_HOST}:${LXC_MODELS_PATH}/training_log.json"
|
|
fi
|
|
echo " 학습 로그 전송 완료"
|
|
fi
|
|
|
|
echo "=== 전송 완료 ==="
|
|
echo ""
|
|
echo "봇이 실행 중이라면 아래 명령으로 모델을 즉시 리로드할 수 있습니다:"
|
|
echo " docker exec cointrader python -c \\"
|
|
echo " \"from src.ml_filter import MLFilter; f=MLFilter(); f.reload_model(); print('리로드 완료')\""
|