如何在AWS SageMaker Studio Labs中修改LangChain的CTransformer下载Hugging Face模型的存储路径
如何在AWS SageMaker Studio Labs中修改LangChain的CTransformer下载Hugging Face模型的存储路径
嗨,我之前也遇到过这个问题,来给你支个招!
首先得说,CTransformers默认是用Hugging Face的缓存机制存模型的,在SageMaker Studio Labs里,默认路径是~/.cache/huggingface/hub这个隐藏目录,难怪你找不到😂。不过要把模型存到脚本所在目录其实超简单,只需要在初始化CTransformers的时候多指定一个参数就行。
我给你一步步拆解:
- 先拿Python的
os模块获取当前脚本的绝对路径,这样不管你脚本放在哪个位置,都能精准定位到它的目录。 - 建议在脚本目录下新建一个专门的
models文件夹来存模型,这样文件结构更规整,不会乱七八糟的。 - 最后在初始化CTransformers的时候,加上
cache_dir参数,把刚才的路径传进去,模型就会乖乖下载到你指定的地方了。
给你现成的修改后代码,直接复制用就行:
import os from langchain.llms import CTransformers from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler # 获取当前脚本所在的目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 创建专门存放模型的文件夹,不存在就自动生成 model_store_dir = os.path.join(script_dir, "models") os.makedirs(model_store_dir, exist_ok=True) # 初始化CTransformers时指定自定义存储路径 llm = CTransformers( model="TheBloke/Llama-2-7B-Chat-GGML", model_file='llama-2-7b-chat.ggmlv3.q2_K.bin', callbacks=[StreamingStdOutCallbackHandler()], cache_dir=model_store_dir # 这一步是关键! )
这样操作后,模型就会被下载到你脚本目录下的models文件夹里,你在SageMaker Studio Labs的文件浏览器里直接点开脚本所在目录就能看到它了。要是你之前已经下载过这个模型,也可以手动去默认缓存目录把模型文件复制到这个models文件夹里,下次运行脚本就不用重复下载了。
备注:内容来源于stack exchange,提问作者808Code
相关产品推荐
相关产品推荐

