JuJu Beta Postmortem
JuJu
demo
demo
项目github地址
JuJu
设想和目标
我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
完成基于Julia语言的NER model,并在CoNLL2003 数据集上取得>=70% 的chunk accuracy。
我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)
我们完成了基本要求,按照原计划交付时间交付了。
计划
是否有充足的时间来做计划?
有,吸收了alpha阶段的经验教训,我们对julia语言更加熟悉了,所以规划也更加合理一些。比如对于接口,很明确要什么类型的接口。
团队在计划阶段是如何解决同事们对于计划的不同意见的?
先进行讨论,如果经过讨论后大家能够明确认定一种想法好于另外一种想法,那么就按照最优解法来。如果不能互相说服对方,那么就各自实现自己的想法。
你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
我们原定是想完成后面的CRF,后来这段时间恰逢大家要开始做毕业论文设计,所以这个计划也就不了了之。
有没有发现你做了一些事后看来没必要或没多大价值的事?
基本上没有
是否每一项任务都有清楚定义和衡量的交付件?
是,我们分为训练,文档撰写, 界面设计三块。
是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
不是,对工作量估计得不恰当; test和dev数据集没有分开,这主要是因为我们对这个NLP任务不是很了解。
在计划中有没有留下缓冲区,缓冲区有作用么?
有作用
资源
我们有足够的资源来完成各项任务么?
有充足的人力资源(6人)以及足够的计算资源。
各项任务所需的时间和其他资源是如何估计的,精度如何?
按照alpha阶段的经验估计的。
你有没有感到你做的事情可以让别人来做(更有效率)?
我们的分工已经尽可能细了,充分考虑到每个人的优势以及时间安排。
变更管理
每个相关的员工都及时知道了变更的消息?
是的,每日例会都会交流
我们采用了什么办法决定“推迟”和“必须实现”的功能?
大家给出自己的时间安排,例会上大家根据时间情况确定。
员工是否能够有效地处理意料之外的工作请求?
计划的工作具有弹性,比较抽象,遇到问题可以灵活解决。
设计实现
团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
使用了unit test,事实上证明测试是非常有必要的。
什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
数据处理部分bug是最多,因为大家对NLP数据处理的内容不是很了解;另外一个出错较多的地方是准确率的评价函数,chunk acc的计算,这个不同于CV里面acc的计算,而且有一些不同的版本。
测试/发布
团队是否有一个测试计划?为什么没有?
有
团队是否有测试工具来帮助测试?
写unit test
团队的角色、管理、合作
团队的每个角色是如何确定的,是不是人尽其才?
是,充分考虑了大家的兴趣与项目的需要;是人尽其才。
团队成员之间有互相帮助么?
有,经常互相帮助
总结
作为事后诸葛亮,我觉得我们项目最重要的一个失误在于 忽视了算法流程本身的复杂性,过于看重julia和Flux的复杂性。
诚然,一开始的时候,我们看到julia语言的时候,她的用法以及数据类型的定义和python差别还是很大的,而且我们这个项目的名字叫JuJu,亮点在于Julia,所以我们的重心就自然而然地放到了Julia上,潜意识里认为这个NLP任务很简单。事实上,这个NLP任务是很简单,用pytorch做起来真的很简单。但这主要是因为,pytorch的数据处理部分都已经写好了,还有一些什么其他的坑前面无数人已经踩过了。就是现在如果用python让你从头开始写完这个project,我觉得也不会那么容易,但是至少比Julia简单,因为踩坑的人多。
我们这个项目最大的问题就是,当我们认为一个部分实现出了问题的时候,我们不知道是算法内容本身理解的有问题,比如评价函数,比如word-embedding,还是julia语言我们用错了。
所以,如果让我从头再来一次,我会安排两个人先去用pytorch来把整个过程跑一遍。这样绝对能够省去很多精力,一旦pytorch的结果是对的,再次碰到问题的时候,我们就知道是julia语言的问题。
另外,一个比较有感触的地方在于,我们一开始把dev和test混在一起了,这不是一种规范的做法。因为dev一般是要用来调整超参的。虽然我们是纯粹看着别人的paper写,不用自己去探索网络结构,但是调整超参是一个必须的流程,就想unit test一样,对于整个流程是非常有必要的!
我一直在想,我们这个project的意义是什么?达到state of art的水平,甚至超过他们?不太可能,而且我觉得也不会有人去刷这么老的task。我感觉我们这个project的真正意义在于,推广julia在DL中的应用,让更多的人知道julia。既然是推广,那么一定要做的规范,所以希望大家批评指正~
贡献分
陈灿 16.70
恩升 16.00
婷婷 16.63
金华 16.14
胡凯 15.95
宇飞 18.57
JuJu Beta Postmortem的更多相关文章
- UltraSoft - Beta - Postmortem事后分析
UltraSoft - Beta - PostMORTEM 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决的问题和定义都在[软软软]功能规格说明书 ...
- [Beta] postmortem
设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决网站前端的数据处理以及获取问题,定义的很清楚,对于典型用户也比较清晰,因为主要只有一个用户,所以对于 ...
- Judy Beta Postmortem
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 与Alpha阶段相同,我们的软件要解决的Julia程序的dubug功能.问题定义得比较清楚,具体分 ...
- 数据获取以及处理Beta版本展示
产品描述 这个产品的目的是为了学霸网站提供后台数据获取以及处理操作.在alpha阶段基本调通的基础至上,我们希望在bate版本中加入对于问答对的处理,图片的获取等功能. 预期目标 在alpha阶段,我 ...
- UltraSoft Scrum Meeting 博客汇总
一.Alpha阶段 UltraSoft - Alpha - Scrum Meeting 1 UltraSoft - Alpha - Scrum Meeting 2 UltraSoft - Alpha ...
- beta 阶段的 postmortem 报告
part一: 用户数:目前约30人 总结:与当初的预算差不多,首先1.第一次开发软件,经验效率不足,那是很正常的事情.2.用户数量少,因为宣传力度还是比较的少.应该加强软件的推广才行. part二: ...
- 【Beta】Phylab2.0: Postmortem
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 主要解决同学们写物理实验报告时,处理数据的困难--巨大的计算量和不规范的物理报告数据处理格式.典型 ...
- WereWolf项目 Postmortem
WereWolf项目 Postmortem (博客园的MarkDown编辑器好像有些问题,编号都显示1..) 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描 ...
- 易货beta版本项目展示报告
一.团队成员和个人博客地址 PM:刘猛 开发人员:胡亚坤,董元财 测试人员:马汉虎,赖彦谕 团队名:bestRW 团队博客地址:http://www.cnblogs.com/niceRW/ 董元财:h ...
随机推荐
- 解决STM32工程出现:Undefined symbol TIM_ClearFlag (referred from hcsr04.o).错误。类型问题Undefined symbol TIM_xxx (referred from xxx.o).
出错原因: 工程FWLIB目录下没有添加stm32f10x_tim.c文件. 添加即可. 一般利用库开发,将ppp.c(ppp.c又调用了库stm32f10x_xx.h)写好之后的调用步骤: 举例使用 ...
- SQLite3创建表及操作
SQLite 创建表 SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表.创建基本表,涉及到命名表.定义列及每一列的数据类型. 语法 CREATE TABLE 语句的基 ...
- 【JavaWeb】Spring入门——HelloWorld
0.为什么要使用Spring https://www.cnblogs.com/zmmi/p/7922186.html 1. 下载jar包 https://blog.csdn.net/qq_435401 ...
- 【STM32H7教程】第57章 STM32H7硬件JPEG编解码基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第57章 STM32H7硬件JPEG编解码基础知识 ...
- Fluent_Python_Part3函数即对象,05-1class-func,一等函数,函数即对象
一等函数 一等函数即将函数看作一等对象.一等对象满足一下条件: 在运行时创建 能赋值给变量或数据结构中的元素 能作为参数传给函数 能作为函数的返回结果 1. 一等函数 例子1. 证明function是 ...
- photoshop下载(ps)
https://pan.baidu.com/s/1bNrUod2n1VqsA7Fr9RHtsg
- Python:json 模块
字符串转dict.list data = "[{....},{...},...]" list_data = json.loads(data) dict.list转字符串 list ...
- Spring Boot 使用 CXF 调用 WebService 服务
上一张我们讲到 Spring Boot 开发 WebService 服务,本章研究基于 CXF 调用 WebService.另外本来想写一篇 xfire 作为 client 端来调用 webservi ...
- 吴裕雄 python 神经网络——TensorFlow 花瓣识别2
import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...
- mysql之指定为definer的用户不存在
问题描述: java.sql.SQLException: The user specified as a definer ('tsingsoft'@'%') does not exist 解决: 1. ...