快速开始.md
4.75 KB
离线任务快速启动指南
一、环境准备
1. 安装依赖
cd /home/tw/recommendation
pip install -r requirements.txt
2. 配置数据库和Redis
编辑配置文件 offline_tasks/config/offline_config.py,确保数据库和Redis连接信息正确:
# 数据库配置
DB_CONFIG = {
'host': 'your_db_host',
'port': '9030',
'database': 'datacenter',
'username': 'readonly',
'password': 'your_password'
}
# Redis配置
REDIS_CONFIG = {
'host': 'your_redis_host',
'port': 6379,
'db': 0,
'password': None
}
二、运行离线任务
方式1:运行所有任务(推荐)
cd /home/tw/recommendation/offline_tasks
python run_all.py --lookback_days 730 --top_n 50
这将依次运行:
- Swing算法(i2i相似度)
- Session Word2Vec(i2i相似度)
- DeepWalk算法(i2i相似度)
- 兴趣点聚合(多维度商品索引)
方式2:运行单个任务
运行Swing算法
cd /home/tw/recommendation/offline_tasks
python scripts/i2i_swing.py --lookback_days 730 --top_n 50 --time_decay
运行Session Word2Vec
python scripts/i2i_session_w2v.py --lookback_days 730 --top_n 50 --save_model
运行DeepWalk
python scripts/i2i_deepwalk.py --lookback_days 730 --top_n 50 --save_model --save_graph
运行兴趣点聚合
python scripts/interest_aggregation.py --lookback_days 730 --top_n 1000
三、将索引加载到Redis
任务运行完成后,将生成的索引加载到Redis:
cd /home/tw/recommendation/offline_tasks
python scripts/load_index_to_redis.py --redis-host localhost --redis-port 6379 --expire-days 7
参数说明:
--redis-host: Redis服务器地址--redis-port: Redis端口--redis-db: Redis数据库编号(默认0)--expire-days: 索引过期天数(默认7天)
四、查看输出结果
所有输出文件都在 offline_tasks/output/ 目录下:
cd /home/tw/recommendation/offline_tasks/output
ls -lh
输出文件示例:
i2i_swing_20251016.txt
i2i_session_w2v_20251016.txt
i2i_deepwalk_20251016.txt
interest_aggregation_hot_20251016.txt
interest_aggregation_cart_20251016.txt
interest_aggregation_new_20251016.txt
interest_aggregation_global_20251016.txt
五、查看日志
所有运行日志都在 offline_tasks/logs/ 目录下:
cd /home/tw/recommendation/offline_tasks/logs
tail -f run_all_20251016.log
六、设置定时任务
使用crontab设置每天运行
# 编辑crontab
crontab -e
# 添加以下行(每天凌晨2点运行)
0 2 * * * cd /home/tw/recommendation/offline_tasks && /usr/bin/python3 run_all.py --lookback_days 730 --top_n 50 >> /home/tw/recommendation/offline_tasks/logs/cron.log 2>&1
运行后自动加载到Redis
可以在crontab中添加索引加载任务:
# 凌晨6点加载索引到Redis(假设离线任务在4小时内完成)
0 6 * * * cd /home/tw/recommendation/offline_tasks && /usr/bin/python3 scripts/load_index_to_redis.py >> /home/tw/recommendation/offline_tasks/logs/load_redis.log 2>&1
七、验证结果
查看文件内容
# 查看i2i相似度
head -n 5 output/i2i_swing_20251016.txt
# 查看兴趣点聚合
head -n 5 output/interest_aggregation_hot_20251016.txt
从Redis查询
# 使用redis-cli
redis-cli
# 查看i2i相似度
GET i2i:swing:123456
# 查看兴趣点索引
GET interest:hot:platform:PC
GET interest:global:country:US
八、常见问题
Q1: 任务运行时间太长怎么办?
A: 可以尝试:
- 减少
--lookback_days参数(如改为365天) - 减少
--top_n参数(如改为20) - 在更强大的机器上运行
- 考虑分布式运行不同算法
Q2: 内存不足怎么办?
A:
- Swing算法特别消耗内存,可以先跳过:
python run_all.py --skip-i2i - 只运行DeepWalk或Session W2V
- 对数据进行采样
Q3: 数据库连接超时怎么办?
A:
- 检查数据库配置是否正确
- 检查网络连接
- 增加SQL查询的超时时间
- 分批查询数据
Q4: 如何只更新特定维度的索引?
A: 修改 interest_aggregation.py 脚本,注释掉不需要的维度计算代码。
九、性能参考
在标准配置(730天数据,top_n=50)下的预估运行时间:
| 任务 | 数据量 | 预估时间 | 内存占用 |
|---|---|---|---|
| Swing | 100万条行为 | 2-4小时 | 4-8GB |
| Session W2V | 100万条行为 | 30-60分钟 | 2-4GB |
| DeepWalk | 100万条行为 | 1-2小时 | 2-4GB |
| 兴趣点聚合 | 100万条行为 | 30-60分钟 | 2-4GB |
实际时间会因数据量和机器配置而异。
十、联系与支持
如有问题,请查看日志文件或联系开发团队。