- Added a new design document outlining the integration of BTC/ETH candle data as additional features in the XRP ML filter, enhancing prediction accuracy. - Introduced `MultiSymbolStream` for combined WebSocket data retrieval of XRP, BTC, and ETH. - Expanded feature set from 13 to 21 by including 8 new BTC/ETH-related features. - Updated various scripts and modules to support the new feature set and data handling. - Enhanced training and deployment scripts to accommodate the new dataset structure. This commit lays the groundwork for improved model performance by leveraging the correlation between BTC and ETH with XRP.
67 lines
2.3 KiB
Bash
Executable File
67 lines
2.3 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 "=== 핫리로드 시도 ==="
|
|
if ssh "${LXC_HOST}" "docker inspect -f '{{.State.Running}}' cointrader 2>/dev/null | grep -q true"; then
|
|
ssh "${LXC_HOST}" "docker exec cointrader python -c \
|
|
\"from src.ml_filter import MLFilter; f=MLFilter(); f.reload_model(); print('리로드 완료')\""
|
|
echo "=== 핫리로드 완료 ==="
|
|
else
|
|
echo " cointrader 컨테이너가 실행 중이 아닙니다. 건너뜁니다."
|
|
fi
|