当前位置: 首页 > news >正文

最好的网站建设团队手机怎么做网站

最好的网站建设团队,手机怎么做网站,东莞圆心科技网站开发,做网站优化推广多少钱一只小狐狸带你解锁 炼丹术NLP 秘籍在合格的炼丹师面前#xff0c;python可能被各种嫌弃前不久卖萌屋的lulu写了一篇vim的分享《算法工程师的效率神器——vim篇》#xff0c;突然想起来自己也有一篇攒了几年灰的稿子#xff0c;在小伙伴的怂恿下跟小夕强行翻新了一下NLP 秘籍在合格的炼丹师面前python可能被各种嫌弃前不久卖萌屋的lulu写了一篇vim的分享《算法工程师的效率神器——vim篇》突然想起来自己也有一篇攒了几年灰的稿子在小伙伴的怂恿下跟小夕强行翻新了一下于是有了本文。已经习惯了IDE的小伙伴可能在炼丹时也惯性的使用pycharm了。这在windows、mac本地炼丹的时候往往没什么但是一旦要在GPU server端初学者就往往开始捉急了更不必说让他all in这个server端的小黑框了。小夕早期也试过一些笨办法和部分场景下有效的“巧办法”比如本地端用pycharm疯狂debug一切测试ready后使用scp将相关代码传到服务器起任务通过syncthing这种同步工具来自动同步本地端和server端代码利用pycharm内置的远端同步功能server端启动jupyter notebook本地端浏览器访问直到遇到了公司跳板机scp、pycharm、jupyter notebook等通通失联本地端与远程GPU服务器被跳板机生生拆散了。于是我问同组的小伙伴这该怎么炼丹ta说“咦直接在服务器上写就好了呀linux不香么vim不香么难道你不会”“我。。我会。。。一点╮(▽)╭”回想自己的炼丹之路其实完全断奶IDE确实不是一件容易的事情。早期一直是用pycharm连接远程GPU服务器来凑合一直觉得效率还行。直到后来投身工业界后发现身边的大佬都是在黑框框里裸奔炼丹效率完全秒杀我这才下决心彻底断奶。挣扎几个月断奶成功后愈发觉得黑框框真香╮(╯▽╰)╭不过毕竟自己不是专业玩linux的只是炼丹之余摸索了一些自己用着舒服的不成体系的方法所以相关玩法可能会有些“歪门邪道”如有更优做法请大佬们在评论区不吝赐教噢~本文目录准备工作与环境迁移问题与机器解耦别忘写个自动配置脚本bash function用起来与bettertouchtool的组合技别再无脑vim了别再无脑python了其实还能写更多太困了还是下次吧QAQ准备工作与环境迁移问题其实如果只是凑合一下那么在黑框里炼丹基本不需要什么准备工作。换到新的服务器之后基本就是vimrc里随手写几条tab扩展、换行自动缩进、文件编码之类的bash里随手建几条alias就可以了剩下就是一顿pip install。不过如果你是一个比较深度的炼丹师往往python环境里存了一些自己得心应手的小工具包还有一些自己临时hack了源码的库可能还要随身携带hadoop客户端以便在集群上炼丹和管理实验还可能对cuda版本、cudnn版本也有一些要求需要随身携带一些常用版本在服务器之间穿梭此外更不用说vim和bash的一堆个性化配置啦。这就导致了一个问题如果炼丹准备阶段丝毫不顾及炼丹环境与机器的解耦和环境的迁移性那么一旦机器挂掉或者你要换机器老板给你买了新机器这就会变得非常痛苦。所以在打磨自己的工具链之后花点时间将工具与环境解耦是非常必要的。与机器解耦比较欣慰的是炼丹依赖的大部分工具和库本身就是跟机器解耦的比如cuda、cudnn、hadoop client等挪到新环境后基本只需要把各bin的路径配置到环境变量PATH里把各lib配置到LD_LIBRARY_PATH里就可以用了最多再export一下CUDA_HOMEHADOOP_HOME等。然而python环境的迁移就相对麻烦一些了。早期的时候小夕在本地搞了一堆miniconda的环境然而换机器的时候才发现迁移时这些环境非常容易损坏或者迁移后发现有时出现奇奇怪怪的问题。当时一顿乱试也没能很完美的解决不知道今天miniconda或anaconda是否有改善本地端的体验真的无敌赞。此外也尝试过用docker管理环境。虽然docker的迁移性很赞自带云端同步但是当你面对一台无法连接外网且没有安装docker的服务器时你就感觉到绝望了。。。一顿离线安装折腾到疯机器环境差点时各种安装依赖会搞到怀疑人生。此外docker也有一定的上手成本理解概念、熟悉常用命令和提高生产力的命令方面会比miniconda明显成本高。最终发现python环境的迁移性方面还是pyenvvirtualenv的组合能应对的情况更多一些使用virtualenv建好一个环境后若要将这个环境迁移到其他机器上分两种情况如果你没有修改某些库的源码所有的库都是pip install的那自然直接pip freeze一下将当前环境里的各个库和版本号直接输出重定向到命名为requirements.txt文件中就可以啦。到新的机器的新环境里直接pip install -r requirements.txt就哦了。然而如果你已经深度定制了某些库这就意味着你需要把整个离线环境打包带走了。这时首先要保证目标机器跟现有机器的大环境差不多否则一些系统底层库版本差异很大可能导致上层的库调用出错然后借助virtualenv自带的命令就非常容易了直接一行virtualenv -relocatable 就可以将环境里绝对路径改成相对路径从而完成跟当前机器的解耦。不过亲测对有的包解耦不彻底尤其是ipython这种有bin文件的。这就需要手动的将环境里bin目录下的这些bin文件首行的解释器路径改成相对的比如直接/bin/env python。最后就是改改bin目录下的activate系列文件中的绝对路径啦。至此就可以放心的带着小环境穿梭在各大机器了且无需考虑目标机器是不是离线机器。别忘写个自动配置脚本上一节将python环境cuda、cudnn、nccl、hadoop等与机器解耦后就可以再带上vimrc,bashrc, inputrc等文件一起跑路了。这时候就发现bash script真香了把你的配置流程直接写进脚本里这样到了新环境直接run一下这个脚本你的全套家当就搬过来啦。懒人的alias说完了环境准备和搬家的事情然后就可以开始谈谈怎么偷懒了。虽然精力旺盛的时候多敲几个字母也没什么燃鹅当你深夜面对实验结果甚为沮丧时你就会发现敲个nvidia-smi都是那么无力。所以干脆就提前把懒提前偷一下。贴一个自己的常用懒人alias可以考虑写入到你的~/.bashrcfunction enshort() {alias lls -aalias ddu -h --max-depth 1 alias nnvidia-smialias vbvi ~/.bashrcalias sb. ~/.bashrcalias scscreenalias nvfindfuser -v /dev/nvidia*alias nvingwatch -n 0.1 nvidia-smi } 不过需要强调一下如果多人共用机器记得像上面一样把你的私人alias封到函数里以免与他人命令冲突造成不便。为了进一步偷个懒你可以把这个函数的启动封装在virtualenv的启动脚本里或者在外面再封一层更高level的环境启动函数。这样就避免了每次登陆都要手动启动一堆函数的麻烦。bash function用起来虽然对算法工程师来说bash一般用来写一些非常高level的流程大多数只是顺序执行一堆命令外加写几个分支不过巧用bash中的function来封装一些高频的操作往往也可以大大提升日常炼丹效率。例如平时炼丹实验挂一堆之后我们可能时不时想看看某个实验的cpu利用率内存占用等每次用ps一顿操作都要敲不少东西于是机智的小夕还是选择封装一个小function# Usage: psfind keywords (RegExp supported) function psfind() {ps aux | head -n 1ps aux | grep -E $1 | grep -v grep } 这个函数既支持psfind 进程号也同样支持匹配进程中的关键词且支持正则表达式来支持复杂查找。最主要还是格式化了一下输出这样打印出来会看起来很清晰。觉得好用的话欢迎拿走记得留个赞与bettertouchtool的组合技提高linux环境中的炼丹效率除了上述这种在.bashrc中作文章mac用户还可以通过一个众所周知的神器APPbettertouchtool来组合提升日常效率。大部分mac用户可能只是用它来强化触控板手势了其实它的键位映射也是炒鸡无敌有用的鸭例如众所周知在命令行里或者vim的插入模式下我们可以通过ctrlw来向前删除一个单词这个命令虽然无敌有用但是早已习惯了ctrl/option/cmddelete的我们还是会觉得这个设定比较让人精分导致影响了它的实用性。不过用btt完全可以把这个ctrlw这个键位映射到我们习惯的optiondelete来删除一个单词mac系统中大都支持optdel删除一个单词的设定如下图当然了如果你用的不是mac自带的终端而是iterm等第三方的话也可以考虑通过内置的键位映射功能来完全这个操作或者就适应一下ctrlw的设定啦╮(▽)╭别再无脑vim了linux新手在去查看一个文本数据集或日志文件时基本就是直接用vim打开后开始上下左右的看。其实对NLPer来说相当多的场景是无需反复去vim的有时反而会更加问题的复杂度或阅读体验更糟。先说说最简单的关于随便瞥一眼数据集的开头。当数据集比较大时哪怕是用sublime、vim这种高性能、轻量级文本编辑器打开都要等待很久很久虽然vim可以ctrlc打断超大单文件数据集更是噩梦了。其实只是瞥一眼的话完全可以使用head命令来快速取出一个文件的前多少行比如head -100 train.csv 就可以直接print出来train.csv这个文件的前100行数据完全没必要把整个文件都load进内存里。此外有的文件内容可能是实时变化的比如模型训练时的训练日志文件如果希望持续track一个文件的内容可以通过tail命令tail -f log 如果不仅要瞥一眼而且还想查看或获取到文件中某些特定的行。有的小伙伴就觉得必须要叫vim爸爸来帮忙了甚至要求助python。其实这种高频场景也完全没有必要的直接用grep就能找出你感兴趣文件中的那些你感兴趣的模式。这方面尤其在处理训练/eval日志时非常高效例如这么一份训练日志我们eval了几十上百个ckpt每次eval都往里面打了一堆日志但是我们希望只看一下各个step的dev evaluation的结果那么借助管道和grep可以非常轻松的完成cat eval.log | grep \[dev 而grep的想象力也绝不是限制在管道里面它完全可以单独使用直接去从若干你感兴趣的文件中寻找特定的模式比如./*/*就把所有子目录也一起遍历了在你批量管理、分析实验日志时用熟之后堪称神器。当然了进阶一点用好awk或sed后能摆脱vim和python的情况就更多了尤其是在快速编辑方面。不过这块一写可能又停不下来QAQ算了算了下次再写吧能凑够一篇文章的话别再无脑python了如上节所述使用grep, awk等linux的一些神器命令可以在很多高频场景下替代文本编辑器大大提升炼丹效率。其实在coding层面上也是如此。例如如果我们想把上一节末尾的图片中的日志按照step从小到大排列后展示出来怎么做呢可能又有小伙伴要说上python了。殊不知linux中内置了很多方便易用的命令包括排序sort命令去重uniq命令等因此这个排序的需求在上一节末尾的grep命令处通过管道连接一个sort就直接完成了cat eval.log | grep \[dev | sort 在数据集处理方面还有一个NLPer必知的命令就是cut啦。这个命令堪称是处理csv/tsv格式文件的神器了当你需要从CSV数据集文件中提取出某些列时可以直接帮你免去开python的麻烦例如如下众所周知的Quora Question PairsQQP数据集从第一行可以看到这个数据集包含6列id  qid1    qid2    question1   question2   is_duplicate但实际上我们单纯训练一个q-q文本匹配模型的话只需要最后三列就够了。不懂linux的小伙伴可能会用python打开文件然后一顿for循环和str.split了。但实际上用上cut之后配合管道只需要一行cat train.tsv | cut -f 4,5,6 train.tsv.cut 就把数据集的第456列提出来了并且存储在了train.tsv.cut文件中。如果需要的数据来自于两个文件可以分别cut出来再将这些列拼到一起新文件是mn列可以理解成cat是纵向连接两个或若干个文件而paste则是横向连接paste file1.txt file2.txt 最后训练数据的去重和shuffle也完全可以不用python去写分别用uniq和shuf结合管道就能一行命令搞定sort train.tsv.cut | uniq | shuf train.tsv 总之类似于cutwc统计词数、行数的神器的这种linux中的小命令很多很大程度上帮我们解决了一些简单高频的数据集处理的需求尤其CSV避免了无脑使用python导致的低效时间开销。另外不仅简单场景可以直接用linux命令组合替代python一些高端场景下linux命令与python的配合更是容易让复杂的事情变得非常简单。一个很常见的就是对大型数据集的单机并行处理wait最简单的单机并行数据预处理当数据集比较大时我们要跑分词、shuffle、抽文本特征之类的可能会非常非常慢千万级以上就明显感觉不行了过亿之后要命了如果强行把这些逻辑都丢到训练里面又可能明显拖慢训练速度虽然可以通过异步数据读取来缓解下且极大的增加了训练阶段的CPU资源消耗。然而如果我们用单核来跑全量数据这个核用上洪荒之力可能也要跑一晚上处理阅读理解这种数据的会就更久了。要迭代预处理策略就会变得非常困难怎么办呢用python手撸多线性代码确实可以但我嫌麻烦╮(╯▽╰)╭最简单的做法就是用类似map reduce的范式来写让python脚本仅仅去处理一个“单位”的数据这里的单位可以是一个文本行也可以是一个数据集的文件part。例如我们一个CSV文件里有1亿条样本那么我们可以先用split命令把它切成100个part先用wc -l确定行数然后并行处理后再merge起来随手写下for i in {0..99}; dopython process.py train.tsv.part$i train.tsv.part$i.tmp done wait cat *.tmp train.tsv.processed rm *part* 就坐等小服务器上所有的CPU核心被打满进行数据处理啦但是如果代码bug了怎么办等所有进程跑完吗nonono当然是一键kill啦~这里一种是偷懒的办法直接用pkill -f xxx来杀死所有包含某个名字的进程pkill -f process.py 不过这样可能存在误杀的情况需要注意名字不要取得太过于危险╮(▽)╭此外由于深度学习框架和一些库的原因或者我们不小心打印了过量的内容到屏幕上这时候也容易出现进程退不出来的情况很多小伙伴选择了断开ssh链接这时候可以使用ctrlz将前台进程强行丢到后台并挂起然后kill %N来杀掉它这里的N一般是1除非之前已经将一些前台进程挂后台了按下ctrlz之后[1]  Stopped                 top[xixiaoyaoxxx.com emmm]$ kill %1好困QAQ发现篇幅有点长了还是写到这里戛然而止吧。喜欢本文期待后续炼丹技巧分享的小伙伴们记得持续关注小屋星标小屋 哦。夕小瑶的卖萌屋_关注星标小夕带你解锁AI秘籍订阅号主页下方「撩一下」有惊喜哦
http://www.pierceye.com/news/299942/

相关文章:

  • 企业网站开发开题报告青岛app软件开发
  • 静态网站 搜索合肥做双语外贸网站
  • 网站建设需求计划书手机应用市场
  • 乐清网站自助网站系统
  • 北京4网站建设WordPress不会php
  • wordpress百度搜索对接免费seo提交工具
  • 网站结构优化包括哪些WordPress多城市
  • 北京三屏网站制作wordpress 分词插件
  • 潍坊哪里可以做网站建设网站一定需要云服务器么
  • 高新网站建设多少钱重庆模板网站建设费用
  • 陕西的网站建设公司哪家好网站建设与维护典型案例
  • 遵义网站开发的公司有哪些网站建设vps
  • 百度网站与推广徐州网站建设网络推广
  • 8818网站建设网站建设平台一般多少钱
  • 万网怎样做网站调试百度在线扫一扫
  • 建设网站平台哪个好如何提高商城网站权重
  • 深圳手机网站设计抖音开放平台
  • 平山做网站优化网页版梦幻西游五色石攻略
  • 字体图标制作网站长沙网站排名公司哪家好
  • 百度和阿里哪个厉害做网站千万不要学数字媒体技术
  • 可信赖的商城网站建设长春疾控最新消息
  • 做阿里网站开发公司名字
  • 企业网站建设内容杭州有几个区
  • 松江建设管理中心网站网站sem托管
  • 做网站前期框架图射击官网
  • 吉首网站建设吉首网站建设网站app制作费用单
  • 网站最好的优化是什么经过学习网站开发后的心得体会
  • 如何把资料上传到网站公司网站建设视频教程
  • 济南建设网站平台泰安高端网站设计建设
  • 武安网站建设价格开发区网站建设