个人介绍
熟练使用 Python(10年长期使用)
Pytorch 图形图像AI开发,检测、分类、分割、目标追踪
numpy,matplotlib,seaborn各种科研计算,科研作图经验丰富
熟悉Python后端,Flask,FastAPI,peewee,requests
前端也可以做 VUE
工作经历
2021-01-01 -2022-01-01上海人工智能研究院高级顾问
公司主要业务为AI产业孵化,AI应用开发等。期间与团队共同完成了AIOPs算法开发。主要任务为依据服务器状态,MEM,CPU,网络流量,请求频率等进行时序预测,并进一步进行容量报警。另一主要任务为根据服务器指标进行故障预测,根因分析。我主要负责算法开发。
2015-07-01 -2015-10-30爱立信实习
使用Golang开发可扩展云业务。公司正在进行可扩展云服务的探索,实习期间使用golang,以Redis为数据结构存储,nats作为message bus,开发了多个分布式微服务,实现map-reduce模式。
教育经历
2016-09-01 - 2022-06-01上海交通大学计算机科学与技术博士
2012-09-01 - 2016-06-30上海交通大学计算机科学与技术专科
技能
这个项目现在正在开发中,主要解决自己工作中的一些痛点。在科研中,每个项目可以拆分为很多部分,每个部分可能需要较长的时间运行,不同的部分可能可以并行,可能存在依赖关系,同时希望已经调试完成的部分缓存中间结果,以便开发下一部分是不用重新计算已有的部分节省时间,而当前面的部分有修改的时候,所有依赖他的部分都需要重新运行得到正确结果。 这个流程手动管理就会很困难。因此可以把每个独立的部分单独写在一个py文件里面,文件头用注释写了需要的来自其他部分的输入,然后这个项目负责 1. 读取整个目录,解析文件头的信息,建立依赖图 2. 根据依赖关系的顺序依次运行每个任务 3. 保存中间结果,记录每个任务运行时的代码hash以及依赖的hash 4. 监听文件变化,在文件改动时检测每个任务是否需要重新运行,并依次运行所有受影响的项目 5. 提供依赖图,一个简单的webUI,命令行运行接口 我负责所有的工作 webUI使用了NiceGUI开发,对小型webapp来说更方便快捷 文件头使用yaml编码,使用AsyncIO进行并发任务处理,使用进程池在单独进程里面运行任务。 主要难点: 1. 追踪任务状态,以较小的代价更新状态是比较困难的,实现上使用了大量装饰器来简化工作,对代码重构了多次 2. 进程间通信和同步,这个地方踩了不少坑,尤其后期想支持进度条,试了挺多模式 3. 保持单个python文件可运行,为了保持单个python任务在没有这个框架的情况下也能运行,尽量少的对代码进行修改,并且提供了一个运行函数,载入缓存并且运行任务,这样在debug以及开发新任务的时候很有用 图片中展示了一个实际项目的依赖图
爱心屋是学校公益项目,主要工作是回收旧书、衣物等物品,筛选过后用于二次出售(以app内爱心币形式)或者捐赠。 主要有几个使用场景: 1. 捐赠系统,捐赠时记录捐赠信息(包括图片,爱心币价格评估) 2. 产品管理,记录、检索、批量处理捐赠品的状态,包括来源、时间、出售状态、价格、二维码、库存等 3. 用户管理,记录、检索、修改用户状态。包括注册、注销、获得爱心币、使用爱心币、绑定校内账户等 4. 活动管理,用于添加、删除、修改促销活动、包括用户预约活动,管理特殊折扣,管理活动时间、开始状态 项目主要为CS+BS架构,用HPPT接口解耦前后端,同时提供webUI和APP 我主要负责后端服务。使用FastAPI和requests为主,数据库操作使用peewee,数据库为了与原始系统保持一致,接入了原有的MySQL,并且根据原表格重建了python ORM,由于需要接入原有的扫码、pda等设备,这个APP后端在接到前端服务器请求后,会根据需求发送request到原服务器并进行相关操作。
使用深度学习进行糖尿病眼底病变检测。 实现DR、DME全阶段分级、黄斑位置、视盘位置检测 主要工作可以分成几部分: 1. 算法部分,对图片进行分析获得病变信息,生成报告需要的文字和数据,对内部提供http API 2. 软件部分,进行用户验证,提交图片,发送AI诊断的请求,获得结果并渲染成图表,记录结果并且返回前端显示 这个项目是产学研结合项目,我负责了几乎所有开发,包括后端,前端,AI模型训练和封装。 前端使用Vue框架做的single page app,主要通过发送http请求获得结果并显示,包含了用户管理,诊断记录,诊断回放等功能 后端使用FastAPI做server,使用requests发送算法服务请求,使用postgresql作为存储数据库,用peewee写的ORM来操作数据库。 算法部分使用Pytorch进行的模型开发,用ONNX方式部署,外面使用了flask做server,接受请求并返回结果。 整个项目算法部分和软件部分分别都用docker打包,方便云上部署。