one-api部署在docker中,一直都正常。项目上线正式服务器后,发现one-api容器无法启动,日志发现其无限重启,错误原因是failed to get gpt-3.5-turbo token encoder,看来它肯定是需要联网下载数据,我的正式服务器是无法上网的。

最后在github找到这么一个原因:

failed to get gpt-3.5-turbo token encoder: · Issue #609 · songquanpeng/one-api (github.com)

默认程序启动时会联网下载一些通用的词元的编码,如:gpt-3.5-turbo,在一些网络环境不稳定,或者离线情况,可能会导致启动有问题。 

可通过配置TIKTOKEN_CACHE_DIR设置缓存目录,由于我用的是docker,那么干脆把文件映射到对应的目录即可。

解决办法很简单,先进入能正常运行的one-api docker容器中

docker exec -it oneapi sh

查看/tmp/data-gym-cache/目录下有没有一个叫9b5ad71b2ce5302211f9c61530b329a4922fc6a4的文件,不同版本可能对应的文件名不同。

把这个文件复制出来,然后放在离线服务器的docker-compose.yml文件旁边,然后修改docker-compose.yml,将这个文件映射进去就行

volumes:
      - ./oneapi:/data
      - ./9b5ad71b2ce5302211f9c61530b329a4922fc6a4:/tmp/data-gym-cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4

完美解决。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐