使用 ESP8266-NodeMCU 和 Tasmota 搭建简单的温度和湿度监视器
夏天又到了最闷热的时候,体感相当不舒服,因此想看看室内外的温度、湿度的情况。于是找到箱底的硬件,DIY一个温度湿度监视器。
使用 retry-cli 工具重试命令
通常,在控制台运行命令,如果失败,那么会直接返回非0
的退出码。有时候,可能希望在命令失败退出后,还能继续重试,直到运行成功。而 demoray/retry-cli 工具就是一个小巧的实现。
在本地搭建 AI 代码助手 Tabby
机器学习工程的实例化:部署机器学习的推理代码
在机器学习项目中,数据科学家在服务器上的 Jupyter Notebook 完成机器学习的模型的搭建,包括读取数据、清洗数据、特征工程、模型训练,最终创建推理代码和模型。这些代码和模型需要被部署到生产环境运行。数据科学家完成的一系列工作可认为是在自己的“沙盒”或者实验环境里离线完成的,与生产环境有很大的差异,还需要考虑更多非功能的因素;而数据科学家没有经过软件工程的训练,编写的代码很可能不是生产就绪(Production Ready)的。因此,需要对数据科学家编写的代码进行工程化的重组和改造,才可以部署到生产环境。
从本地目录中安装 Python 包
在开发 Python 应用或者完成机器学习任务时,通常使用 pip install -r requirements.txt
安装第三方包。但是,当代码在生产环境中运行前,才去安装依赖包,会产生一些问题。比如安装时间长的问题:从官方PyPI服务器或者国内镜像安装依赖包时,网速不够快。对于一些大型包,尤其是机器学习使用的包,可能耗费几分钟或者几十分钟的时间。
参考应用开发的模式,可以将打包和运行解耦。在部署之前,将代码及其依赖打包成本地文件,在运行期间从本地文件中安装或者提取依赖。
运行 Jupyter Notebook
通常数据科学家或者工程师会交互式地使用Jupyter Notebook。其实 Jupyter 还提供了在命令行直接运行 Notebook 的能力。详细说明见其文档《Executing notebooks 》。
让 Docker 使用代理服务器
在越来越多的情况下,难以直接使用 docker
命令行构建和运行容器。那么使用代理服务器是一个可选方法。在使用代理时,需要考虑两个场景:
- Docker 守护进程的代理
- Docker 容器中的代理