当前位置:首页 » 服务存储 » 分布式存储问答
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

分布式存储问答

发布时间: 2023-04-11 18:44:05

Ⅰ Web3.0中国峰会暨分布式存储行业大会隆重举行

11月11日-15日,Web3.0中国峰会暨分布式存储行业大会(以下简称“峰会”)在深圳福田会展中心隆重举行。峰会作为2020中国国际高新技术成果交易会(以下简称“高交会”)的重要组成部分,汇聚了众多领军人物、企业代表、专家学者、权威媒体人等,同时共享高交会来自智能 科技 、互联网、物联网、人工智能、大数据、新基建等行业超40万名专业观众。

深圳麦客存储 科技 有限公司(以下简称“麦客存储”)作为分布式存储十强企业及区块链二十强,荣幸受邀参会。麦客存储首席商务官朱颂先生出席峰会,发表“铸就存储产业新生态,加速新动能崛起”主题演讲,并参与“区块链分布式存储之生态路在何方”圆桌论坛。


铸就存储产业新生态


朱颂表示,数据时代即将到来。以后的人类 社会 ,数据是如同当今石油等一般的重要战略资源之一,势必会被各利益集团所争夺。在未来, 算力是能源,算法是法则,而存储就是土壤


区块链被公认为是对生产关系的变革,可以大幅拓展人类协作的广度和深度,从而推动“信息互联网”向“价值互联网”变迁。它也被认为是未来发展数字经济、构建新型信任体系不可或缺的技术之一,而区块链分布式存储是其中极为重要的一部分。


未来区块链分布式存储将在数据管理、保护等方面发挥更加积极的作用,成为大国重器和数字产业生态的系统构建与新基建的重要引擎。


麦客存储牢记使命,坚守担当,在推动传统存储产业革新的同时,积极与不同领域企业携手创新,加快落实区块链分布式存储在产业链中的实际应用、融合应用,发挥新技术先进优势,形成产业新生态。


主题演讲完毕,朱颂接受多家行业权威媒体采访,以下为问答实录:

区块链分布式存储相较于其它存储技术有何创新之处?都有哪些优势?行业现状如何?

区块链分布式存储结合了区块链技术的优势,相较于传统中心化存储技术,有下载速度快、数据安全性高、存储成本低廉、数据留存时间长、可溯源、消除冗余文件等众多优势,被广泛认可为构筑Web3.0的基石。

新基建和“十四五”对于区块链分布式存储行业发展都是利好政策,国家也多次颁发相关政策引导尽快培育数据市场。现在的行业正在快速发展期,整体欣欣向荣,麦客存储积极推动应用落地与生态建设,为行业做出实际的贡献。

麦客存储广东分布式存储数据中心部署情况如何?麦客存储推出“麦客星际中国”计划,并在推动“2+1”上市规划,现在进展如何?

麦客存储将斥资2.5亿元人民币收购广东分布式存储数据中心,目前部署顺利,已启用。

截至11月13日,麦客存储已成立多家银河系公司、太阳系公司、地月系公司。九月以来,“麦客星际中国”全国巡回峰会成功召开了36站。11月7日,麦客存储正式启动新加坡上市工作。

麦客存储在行业内处于什么地位?核心优势有哪些?

麦客存储持续处于业内领先地位。

麦客存储在区块链分布式存储行业最大的优势是集合全产业链于一体,深度融合供应链上下游,拥有多个数据中心、自建存储服务器生产工厂,且非常注重自主技术的研发,并在行业内深耕多年。无论是在存储服务器的硬件质量控制、性价比、数据中心运维、降低经营成本、合作渠道等方面都有着不小的优势,也是麦客存储核心竞争力所在。


构筑Web3.0


“互联网+”的魅力毋庸置疑,电子商务与各种云平台、云服务大行其道,精彩纷呈的网络世界无疑已成为人类 社会 的重要部分。但是,现行网络已经愈发难堪当今 社会 的实际需求, 数据确权、隐私保护、权益保护如同三座大山一般横亘在互联网上

站在千禧年后第一个二十年末,我们发现互联网亟需进化,刻不容缓。首先,要改造一样事物,了解它的发展历程非常有必要,现在的专家学者们普遍认同将互联网分为三个时代,我们或将进入Web3.0时代。

Web1.0

以静态、单向阅读为主,网站内信息可以直接和其他网站信息进行交互,能通过第三方信息平台同时对多家网站信息进行整合使用。代表为新浪,搜狐,网易三大门户。

Web2.0

以分享为特征的实时网络,用户在互联网上拥有自己的数据,并能在不同的网站上使用。(即现行网络)

Web3.0

将以网络化和个性化为特征,提供更多人工智能服务,完全基于Web,用浏览器即可实现复杂的系统程序才具有的功能。

Web3.0尚未正式诞生,现处于初级阶段,难以完全准确定义,但公认可以实现万物互联的美好畅想,代表着下一个时代的需求。 在Web3.0中,信息自由交互,价值自由流通。数据和价值都属于用户,而不是提供服务的公司。


分布式存储成刚需

无论是Web 1.0还是Web 2.0,因为运营服务的中心化总是或多或少地带来透明度和信任的问题,但是这一问题可以通过数据权益通证化、数据确权与授权的区块链技术应用来得到解决,这个过程完成之后,Web3.0时代也将来临。在这个实现的过程中,区块链分布式存储将发挥举足轻重的作用。


分布式相对于中心化来说,更稳定、抗风险能力更强、消耗更低、更公平、更透明、更简单。


事实上,分布式思想已经在我们的工业、科学等众多方面应用非常广阔。

去中心化的准确描述应该是多中心,或者说是没有唯一的中心控制的弱中心,去中心不代表着没有中心,而是把机会拉平,每个寻常的节点都有可能成为中心,如同每个普通美国人,都有可能成为美国总统。

加速新动能崛起


因5G、云计算、人工智能等为代表的一批高新技术蓬勃发展,数据存储需求爆炸式上升,区块链结合分布式存储带来的是一种全新的技术想象,一种突破传统的海量数据存储模型,是一次革命性的颠覆浪潮。


近日,国家广播电视总局办公厅印发《国家广播电视总局办公厅关于印发区块链技术应用系列白皮书的通知》。白皮书中多次提及IPFS、区块链分布式存储,肯定了IPFS的应用价值与技术优势,并就如何利用IPFS等新技术打造融媒体中心等做出详细介绍。区块链分布式存储的重大价值显露无疑。


麦客存储作为区块链分布式存储领域先驱引领者,重视技术协同、生态融合,推动多项技术的构建,致力于区块链分布式存储与5G、大数据、云计算、物联网、人工智能等产业深度融合协同发展,助力传统企业转型升级,加速新旧动能转换,为数字化时代的发展做出贡献。

Ⅱ ENS发布前,听团队谈项目DAO治理,空投和Layer 2 规划

ENS DAO将决定交易费变更、金库用途等和.eth相关的一切事宜,任何代币持有人都可以参与DAO治理。

以太坊域名服务( Ethereum Name Service )是一个基于以太坊区块链的分布式、开放和可扩展的命名系统。通俗地说,ENS就是区块链中的域名系统。ENS域名让人们没有必要再复制或输入冗长的区块链地址。

ENSUser是社区自发维护的非官方ENS中文社区,维护了ensuser .com( ensuer.eth.link), 为中文世界的ENS用户和应用开发者提供了ENS相关的资讯、使用教程和文档教程。

2021年11月1日,ENS宣布发布治理代币,web3域名协议即将开启去中心化治理。

ENSUser邀请ENS运营主管Brantly.eth 做客社区,分享关于DAO治理、空投、Layer2拓展等一系列中文世界用户关心的问题。 以下为AMA回顾。

TLDR

ENS空投50%的代币将归属DAO本身。25%将提供给拥有.ETH名称的账户,另外25%将分配给在过去5年中以重要方式为ENS做出贡献的数百人。DNS映射域名和子域名未计入空投。ENS项目未进行过融资,核心团队不会为代币提供流动性以及主动联系交易所上币。DAO将决定交易费变更、金库用途等和.eth相关的一切事宜,任何$ENS持有人都可以参与DAO治理,成为Delegator。

社区收集问题

Q1:可以从您的角度,先给我们社区的小伙伴简单介绍一下ENS这个项目吗?他在Web3.0生态中担当什么样的角色?

Brantly.eth: ENS是web3的身份协议,最终适用于整个互联网。您拥有自己的用户名,控制个人资料数据,并将其带到您使用的每个dapp和服务中。这与web2不同,在web2中,您为每个孤立的服务使用不同的帐户和用户名,在web3中,您拥有自己的用户名并使用到各种应用中。

以上这是主要用例。另外两个重要用途是您的ENS名称可以简化任何区块链的加密支付,并且它可以是一个去中心化的网站。

Q2: .eth 域名可以说是比Punk更早的NFT了,可以给我们简单介绍一下ENS的团队背景和发展历程吗?

Brantly.eth: ENS于2017年5月4日推出。这比CryptoPunks早了几周,比Curio Cards早了几天。我很确定ENS是世界上持续运行时间最长的NFT社区。当时有NFT标准不过还没有ERC-721标准,后者在那年晚些时候问世。

ENS于2016年作为Nick Johnson和以太坊基金会的其他一些人的闲暇项目开始。当ENS在2017年推出时,它非常简单,只是以太坊地址和Swarm哈希的.ETH名称。但目前它已经发展了很多:它现在支持任何区块链地址; IPFS、Skynet 和Arweave也有哈希值;和个人资料数据,如头像。它也不再只是.ETH名称;您还可以将任何DNS名称导入ENS。

Q3: ENS刚刚发布了治理代币的计划。对于ENS生态中的普通用户、投机者、合作伙伴等不同角色,怎样分配初始的治理权能有利于ENS的长期利益?

Brantly .eth: 50%的代币将归属DAO本身。25%将提供给拥有.ETH名称的账户,另外25%将分配给在过去5年中以重要方式为

ENS做出贡献的数百人。对于空投,它与一个人拥有的 .ETH名称的数量无关, 而是与他们拥有任何域名的时间成正比。这避免了给大规模域名抢注者过多的权力。对ENS生态系统做出重大贡献的项目将获得额外的代币,例如ENSUser将获得一r些贡献者代币。非常感谢你所做的一切!

Q4: ENS金库中有大量的注册费,随着治理权的开放,将会怎样分配这些资金?

Brantly.eth:好问题。这将由ENS DAO来决定!这实际上是做DAO背后的一大推动力:我们不知道如何花钱,我们希望社区对此有发言权。(注: ENS金库目前有超过2400万美金)我们建议他们首先将其用于ENS开发,然后用于ENS生态系统,然后用于web3公共产品。

Q5: Gas太高了,ENS有layer2的发展计划吗,目前有怎样的进展呢?

Brantly.eth:是的,gas fee很糟糕。我们计划使用CCIP-read来允许用户将记录和子域放在他们选择的L2上。在降低注册.ETH名称的费用方面,需要更长的时间。我们最终可能会将其移至L2,但问题是我们必须将所有注册移至该L2,并且我们希望等待L2生态系统先成熟。

Q6:目前有哪些基于ENS构建的应用令你眼前一亮,你希望未来ENS生态会发展出怎样的用例?

Brantly.eth:使用ENS名称作为您的用户名非常强大,我喜欢任何以这种方式使用ENS名称的dapp。最近还看到一个项目,用ENS来命名分布式文件网络上的文件存储,很酷。

Q7:前一段时间ENS兼容了全部的DNS域名,这是否会影响.eth域名的价值? .eth对比传统DNS接入的域名有什么优势?

Brantly.eth:我不这么认为。虽然导入到ENS的DNS名称可以做很多相同的事情,但.ETH名称仍然有一些优势。例如,.ETH名称是完全自托管的,而导入到ENS的DNS名称与普通DNS名称具有相同的安全级别。

此外,我认为.ETH具有很好的品牌效应。正如.COM代表了互联网的兴起,我认为.ETH作为一个符号代表了web3的兴起

自由问答

Q8:ENS有计划上任何交易所吗?

Brantly . eth: ENS核心团队不会为代币提供任何流动性,或者主动接洽交易所商讨上币事宜。

Q9: ENS会上币安吗?

Brantly.eth:这要问币安了。

Q10:我想知道为什么不给将DNS接入ENS域名的用户空投代币?我认为这是从web2到web3的积极过渡,对整个加密货币生态有利。

Brantly.eth:这是因为DAO将负责治理

与.ETH域名有关的事宜,而且注册机制和注册费都只和.ETH域名相关。

Q11:我要做什么才能参与ENSDAO ?

Branrly. eth:只需要$ENS代币就可以了。11月8号之后就有了。

Q12: $ENS代币有什么功能?

Brantly. eth: $ENS代币给了持有者在DAO中投票的权利。

Q13:目前从公告中看,在Gitcoin中给ENS捐款的用户并不能得到空投。但是未来捐款用户能否获得空投呢,毕竟他们为项目做过贡献?

Brantly . eth: ENS核心团队从来没有接受过Gitcoin的捐款。

Q14:未来会限制注册域名的用户数吗?未来注册费会增加吗?

Brantly. eth:不会! ENS的域名没有上限,我们希望地球上每一个人都能有ENS域名。关于年费,这将由DAO控制,并且DAO决定会不会增加。

Q15: ENS会空投给poap的持有者吗?

Brantly.eth:持有POAP并不会增加空投代币的数量。

Q16:未来我们能用ENS代币而不是ETH来注册域名和续费吗?

Brantly.eth:这将由DAO决定。

Q17:我平时用* .dcl.eth当域名,而且我设置了reverse record,但是我没有空投,我觉得这不公平。你怎么看?

Brantly. eth:我们把空投限制到了.eth 域名,因为DAO将治理和.eth 域名有关的事宜,而不是子域名。

Q18:未解锁的ENS代币会有和流通代币一样的投票权吗?

Brantly. eth:不会,锁仓代币将没有投票权。

Q19: ENS有流动性挖矿计划吗?

Brantly.eth: ENS核心团队将不会提供任何流动性。

Q20: ENS代币将一次性发放还是分批解锁?

Brantly . eth:对于核心团队和顾问的代币,将会分4年释放。50%分配给DAO的代币也是逐步释放。而给其他用户的代币,则是一次性释放。

Q21: Unstoppable domains@有很多顶级

域。ENS团队以后会创建除了.eth之外的其他顶级域吗?

Brantly . eth: Unstoppable没有拥有任何顶级域,他们只是自创了一些域名,并且以后很有可能和ENS以及DNS现有的域名冲突。ENS支持了DNS的域名空间,现在Unstoppabe自创的这些域名未来很有可能碰撞DNS域名空间,造成UN体系内域名持有者和DNS域名持有不同的冲突。

Q22:嗨,brantly! 现在有多少人申请Delegator呀?你们最后会选多少个Delegator?

Brantly. eth:目前好几百人申请。我们不会负责选择delegator,代币持有人决定把代币委托给自己信任的delegator,完全由用户决定。

Q23: ENS有路线图吗?

Brantly . eth:我们经常公开讨论进展、工作情况以获得反馈,不过以后我们或许应该发布一个更新的路线图。

Q24: ENS好用好记,不过现在很多钱包和交易所都不支持,你怎么看?以后怎么拓展ENS的用例,团队会做些什么?

Brantly.eth:目前有310种接入了,不过ENS需要有数千种应用接入ENS。社区用户能做的是礼貌地向各种服务要求接入ENS域名。各种应用都会听用户的意见。

Q25:嗨,Brantly! 为什么你们现在决定发币和DAO起来了,而不是几年之前?

Brantly. eth:我们觉得ENS和DAO目前足够成熟了。不知之前,DAO还是非常实验性的,而且ENS也还很幼稚。

Ⅲ 如何利用深度学习技术训练聊天机器人语言模型

数据预处理

模型能聊的内容也取决于选取的语料。如果已经具备了原始聊天数据,可以用sql通过关键字查询一些对话,也就是从大库里选取出一个小库来训练。从一些论文上,很多算法都是在数据预处理层面的,比如Mechanism-Aware Neural Machine for Dialogue Response Generation就介绍了,从大库中抽取小库,然后再进行融合,训练出有特色的对话来。

对于英语,需要了解NLTK,NLTK提供了加载语料,语料标准化,语料分类,PoS词性标注,语意抽取等功能。

另一个功能强大的工具库是CoreNLP,作为 Stanford开源出来的工具,特色是实体标注,语意抽取,支持多种语言。

下面主要介绍两个内容:

中文分词

现在有很多中文分词的SDK,分词的算法也比较多,也有很多文章对不同SDK的性能做比较。做中文分词的示例代码如下。

# coding:utf8
'''
Segmenter with Chinese
'''

import jieba
import langid


def segment_chinese_sentence(sentence):
'''
Return segmented sentence.
'''
seg_list = jieba.cut(sentence, cut_all=False)
seg_sentence = u" ".join(seg_list)
return seg_sentence.strip().encode('utf8')


def process_sentence(sentence):
'''
Only process Chinese Sentence.
'''
if langid.classify(sentence)[0] == 'zh':
return segment_chinese_sentence(sentence)
return sentence

if __name__ == "__main__":
print(process_sentence('飞雪连天射白鹿'))
print(process_sentence('I have a pen.'))

以上使用了langid先判断语句是否是中文,然后使用jieba进行分词。

在功能上,jieba分词支持全切分模式,精确模式和搜索引擎模式。

全切分:输出所有分词。

精确:概率上的最佳分词。

所有引擎模式:对精确切分后的长句再进行分词。

jieba分词的实现

主要是分成下面三步:

1、加载字典,在内存中建立字典空间。

字典的构造是每行一个词,空格,词频,空格,词性。

上诉书 3 n
上诉人 3 n
上诉期 3 b
上诉状 4 n
上课 650 v

建立字典空间的是使用python的dict,采用前缀数组的方式。

使用前缀数组的原因是树结构只有一层 -word:freq,效率高,节省空间。比如单词"dog", 字典中将这样存储:

{
"d": 0,
"do": 0,
"dog": 1 # value为词频
}

字典空间的主要用途是对输入句子建立有向无环图,然后根据算法进行切分。算法的取舍主要是根据模式- 全切,精确还是搜索。

2、对输入的语句分词,首先是建立一个有向无环图。
有向无环图,Directed acyclic graph(音 /ˈdæɡ/)。

【图 3-2】 DAG

DAG对于后面计算最大概率路径和使用HNN模型识别新词有直接关系。

3、按照模式,对有向无环图进行遍历,比如,在精确模式下,便利就是求最大权重和的路径,权重来自于在字典中定义的词频。对于没有出现在词典中的词,连续的单个字符也许会构成新词。然后用HMM模型和Viterbi算法识别新词。

精确模型切词:使用动态规划对最大概率路径进行求解。

最大概率路径:求route = (w1, w2, w3 ,.., wn),使得Σweight(wi)最大。Wi为该词的词频。

更多的细节还需要读一下jieba的源码。

自定义字典

jieba分词默认的字典是:1998人民日报的切分语料还有一个msr的切分语料和一些txt小说。开发者可以自行添加字典,只要符合字典构建的格式就行。

jieba分词同时提供接口添加词汇。

Word embedding

使用机器学习训练的语言模型,网络算法是使用数字进行计算,在输入进行编码,在输出进行解码。word embedding就是编解码的手段。

【图 3-3】 word embedding, Ref. #7

word embedding是文本的数值化表示方法。表示法包括one-hot,bag of words,N-gram,分布式表示,共现矩阵等。

Word2vec

近年来,word2vec被广泛采用。Word2vec输入文章或者其他语料,输出语料中词汇建设的词向量空间。详细可参考word2vec数学原理解析。

使用word2vec

安装完成后,得到word2vec命令行工具。

word2vec -train "data/review.txt"
-output "data/review.model"
-cbow 1
-size 100
-window 8
-negative 25
-hs 0
-sample 1e-4
-threads 20
-binary 1
-iter 15

-train "data/review.txt" 表示在指定的语料库上训练模型

-cbow 1 表示用cbow模型,设成0表示用skip-gram模型

-size 100 词向量的维度为100

-window 8 训练窗口的大小为8 即考虑一个单词的前八个和后八个单词

-negative 25 -hs 0 是使用negative sample还是HS算法

-sample 1e-4 采用阈值

-threads 20 线程数

-binary 1 输出model保存成2进制

-iter 15 迭代次数

在训练完成后,就得到一个model,用该model可以查询每个词的词向量,在词和词之间求距离,将不同词放在数学公式中计算输出相关性的词。比如:

vector("法国") - vector("巴黎) + vector("英国") = vector("伦敦")"

对于训练不同的语料库,可以单独的训练词向量模型,可以利用已经训练好的模型。

其它训练词向量空间工具推荐:Glove。

Seq2Seq

2014年,Sequence to Sequence Learning with Neural Networks提出了使用深度学习技术,基于RNN和LSTM网络训练翻译系统,取得了突破,这一方法便应用在更广泛的领域,比如问答系统,图像字幕,语音识别,撰写诗词等。Seq2Seq完成了【encoder + decoder -> target】的映射,在上面的论文中,清晰的介绍了实现方式。

【图 3-4】 Seq2Seq, Ref. #1

也有很多文章解读它的原理。在使用Seq2Seq的过程中,虽然也研究了它的结构,但我还不认为能理解和解释它。下面谈两点感受:

a. RNN保存了语言顺序的特点,这和CNN在处理带有形状的模型时如出一辙,就是数学模型的设计符合物理模型。

【图 3-5】 RNN, Ref. #6

b. LSTM Cell的复杂度对应了自然语言处理的复杂度。

【图 3-6】 LSTM, Ref. #6

理由是,有人将LSTM Cell尝试了多种其它方案传递状态,结果也很好。

【图 3-7】 GRU, Ref. #6

LSTM的一个替代方案:GRU。只要RNN的Cell足够复杂,它就能工作的很好。

使用DeepQA2训练语言模型

准备工作,下载项目:

git clone https://github.com/Samurais/DeepQA2.git
cd DeepQA2
open README.md # 根据README.md安装依赖包

DeepQA2将工作分成三个过程:

数据预处理:从语料库到数据字典。

训练模型:从数据字典到语言模型。

提供服务:从语言模型到RESt API。

预处理

DeepQA2使用Cornell Movie Dialogs Corpus作为demo语料库。

原始数据就是movie_lines.txt和movie_conversations.txt。这两个文件的组织形式参考README.txt

deepqa2/dataset/preprocesser.py是将这两个文件处理成数据字典的模块。

train_max_length_enco就是问题的长度,train_max_length_deco就是答案的长度。在语料库中,大于该长度的部分会被截断。

程序运行后,会生成dataset-cornell-20.pkl文件,它加载到python中是一个字典:

word2id存储了{word: id},其中word是一个单词,id是int数字,代表这个单词的id。

id2word存储了{id: word}。

trainingSamples存储了问答的对话对。

比如 [[[1,2,3],[4,5,6]], [[7,8,9], [10, 11, 12]]]

1,2,3 ... 12 都是word id。

[1,2,3] 和 [4,5,6] 构成一个问答。 [7,8,9] 和 [10, 11, 12] 构成一个问答。

开始训练

cp config.sample.ini config.ini # modify keys
python deepqa2/train.py

config.ini是配置文件, 根据config.sample.ini进行修改。训练的时间由epoch,learning rate, maxlength和对话对的数量而定。

deepqa2/train.py大约100行,完成数据字典加载、初始化tensorflow的session,saver,writer、初始化神经元模型、根据epoch进行迭代,保存模型到磁盘。

session是网络图,由placeholder, variable, cell, layer, output 组成。

saver是保存model的,也可以用来恢复model。model就是实例化variable的session。

writer是查看loss fn或者其他开发者感兴趣的数据的收集器。writer的结果会被saver保存,然后使用tensorboard查看。

Model

Model的构建要考虑输入,状态,softmax,输出。

定义损耗函数,使用AdamOptimizer进行迭代。

最后,参考一下训练的loop部分。

每次训练,model会被存储在save路径下,文件夹的命名根据机器的hostname,时间戳生成。

提供服务

在TensorFlow中,提供了标准的serving模块 - tensorflow serving。但研究了很久,还专门看了一遍 《C++ Essentials》,还没有将它搞定,社区也普遍抱怨tensorflow serving不好学,不好用。训练结束后,使用下面的脚本启动服务,DeepQA2的serve部分还是调用TensorFlow的python api。

cd DeepQA2/save/deeplearning.cobra.vulcan.20170127.175256/deepqa2/serve
cp db.sample.sqlite3 db.sqlite3
python manage.py runserver 0.0.0.0:8000

测试

POST /api/v1/question HTTP/1.1
Host: 127.0.0.1:8000
Content-Type: application/json
Authorization: Basic YWRtaW46cGFzc3dvcmQxMjM=
Cache-Control: no-cache

{"message": "good to know"}

response
{
"rc": 0,
"msg": "hello"
}

serve的核心代码在serve/api/chatbotmanager.py中。

使用脚本

scripts/start_training.sh启动训练

scripts/start_tensorboard.sh启动Tensorboard

scripts/start_serving.sh启动服务

对模型的评价

目前代码具有很高的维护性,这也是从DeepQA项目进行重构的原因,更清晰的数据预处理、训练和服务。有新的变更可以添加到deepqa2/models中,然后在train.py和chatbotmanager.py变更一下。

有待改进的地方

a. 新建models/rnn2.py, 使用dropout。目前DeepQA中已经使用了Drop.

b. tensorflow rc0.12.x中已经提供了seq2seq network,可以更新成tf版本.

c. 融合训练,目前model只有一个库,应该是设计一个新的模型,支持一个大库和小库,不同权重进行,就如Mechanism-Aware Neural Machinefor Dialogue Response Generation的介绍。

d. 代码支持多机多GPU运行。

e. 目前训练的结果都是QA对,对于一个问题,可以有多个答案。

f. 目前没有一个方法进行accuracy测试,一个思路是在训练中就提供干扰项,因为当前只有正确的答案,如果提供错误的答案(而且越多越好),就可以使用recall_at_k方法进行测试。

机器人家上了解到的,希望对你有用