Amazon SageMaker普通Jupyter Notebook三类技术问题咨询
Amazon SageMaker Notebook 问题解决方案
1. 实现代码后台运行并在高配置环境执行
SageMaker Notebook的内核依赖浏览器会话,关闭标签后进程会终止,因此必须用**SageMaker处理作业(Processing Job)**来运行长时/后台任务,步骤如下:
步骤1:封装代码为独立脚本
将你的预测逻辑写成可独立运行的Python脚本(比如run_prediction.py),注意对接S3存储(Notebook本地存储不可靠,处理作业无法直接访问):
import pandas as pd from tqdm import tqdm # 替换为你的模型加载逻辑 from your_model_utils import load_pretrained_LLM # 从S3加载原始数据(替换为你的S3路径) df_original = pd.read_csv("s3://your-bucket/input/original_data.csv") # 加载预训练模型 LLM_pretrained_model = load_pretrained_LLM() # 执行预测(用tqdm实现进度条) tqdm.pandas() df_new = df_original.copy() df_new["predicted_values"] = df_original.progress_apply( lambda x: LLM_pretrained_model.predict(x["comment_body"]), axis=1 ) # 将结果写入S3(替换为你的输出路径) df_new.to_csv("s3://your-bucket/output/predicted_data.csv", index=False)
步骤2:提交处理作业到高配置实例
用SageMaker Python SDK提交作业,指定更高配置的实例(比如ml.g5.12xlarge):
import sagemaker from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput # 获取默认会话和角色 sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # 初始化脚本处理器,选择适配你的框架的镜像(这里以PyTorch为例) script_processor = ScriptProcessor( command=["python3"], image_uri="763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu117-ubuntu20.04", role=role, instance_count=1, instance_type="ml.g5.12xlarge", # 按需选择高配置实例 sagemaker_session=sagemaker_session ) # 提交作业 script_processor.run( code="run_prediction.py", inputs=[ProcessingInput(source="s3://your-bucket/input/original_data.csv", destination="/opt/ml/processing/input")], outputs=[ProcessingOutput(source="/opt/ml/processing/output", destination="s3://your-bucket/output")] )
提交后,作业会在独立的计算资源上后台运行,关闭浏览器或断开连接都不会影响执行。
2. 避免长时任务内核崩溃/会话超时
SageMaker Notebook实例默认会话超时为12小时,无法直接支持28小时的任务,最优解决方案是:
- 改用Processing Job:处理作业是独立的计算资源,无会话超时限制,只要作业未完成就会持续运行,且支持实例故障自动重试(需配置)。
- 若必须使用Notebook:在控制台编辑Notebook实例,将「Idle timeout」(空闲超时)调至最大允许值(48小时),但仍存在实例重启、网络中断导致任务失败的风险,不推荐用于超12小时的任务。
- 额外优化:在脚本中加入断点续传逻辑,定期将中间结果写入S3,万一任务中断可从断点恢复。
3. 从普通Jupyter Notebook推送代码到GitHub
可以直接在Notebook实例的终端操作,步骤如下:
- 打开终端:点击Notebook右上角「New」→「Terminal」
- 配置Git身份:
git config --global user.name "你的用户名" git config --global user.email "你的邮箱" - 初始化仓库(若未初始化):
cd /home/ec2-user/SageMaker/你的笔记本文件夹 git init - 添加远程仓库(替换为你的GitHub仓库地址):
git remote add origin https://github.com/你的用户名/你的仓库名.git - 提交并推送:
git add . git commit -m "提交说明:添加预测代码" # 私有仓库需用GitHub个人访问令牌(PAT)代替密码 git push -u origin main
也可以配置SSH密钥(在终端生成密钥对,将公钥添加到GitHub账户),避免每次推送输入密码。
内容的提问来源于stack exchange,提问作者Sar99
相关产品推荐
相关产品推荐

