Skip to main content

ML infra方向需要什么技能?

 
domain是随着role的变化而变化的,SDE可能可以分成至少如下几个role吧。

前端,没什么好说的,算是一大块,我的理解是不管什么公司什么领域,任何前端做的事情都是差不多的。depth可能就是指能熟练掌握流行的CSS/JS框架以及工具,能灵活满足business requirement。但我在前端方面只在刚开始工作时做过短短一年,那时候几乎每年都会有新框架新library出来,react也才方兴未艾。现在不知如何,可能我的理解已经过时。

Service Backend,这里主要就是写服务的后端,也就是业务逻辑。这里其实分得最细,广告、电商、社交、外卖、搜索、商务(B2B软件)、地图等等,都有自己与众不同的业务逻辑和实现方法,每一个小的domain都有值得深挖的部分。depth应该指的是熟悉相关service背后的典型架构,了解各种常用的tooling(data pipeline, database, microservice等),很多所谓的系统设计题就是从这里出的,就是看你能不能组合相关的tooling来开发一个满足business requirement的系统。除此之外,当然也要有快速掌握常规开发语言的framework的能力,因为不同公司甚至不同项目之间,用不同的开发语言的现象非常常见(Java,Go,部分Python,C/C++等)。

System Infra,这里大部分指的是Compute,Network和Storage(我们把这仨叫做Core)相关的系统的开发和运维,有的会在其中某一块钻研,有的则需要组合core infra来开发针对特定需求的infra,比如这里讨论的ML Infra就是其中一种。这里的depth指的自然是在core infra或者hybrid infra方向的深耕细作,在这个年代里,相关的专家往往坐落于各种云服务背后,同时需要开发和运维的技能,如果是Core的话侧重运维,非Core则是侧重开发。
.google  и
SRE,我的理解指的是针对某个Service的运维,分类和Service一样,只不过Service主做开发,SRE主做运维,需要的技能主要是Linux和K8s,以及相关的tooling。我觉得需要注意的是虽然Google、抖音等公司依然有专门的SRE,但是现在越来越多SRE的活被分到了Service backend和System Infra这边,专门的SRE未来的市场我认为会越来越小。
. Waral dи,
Data和SDE不太一样,Data Engineer可能可以理解为Data方向的System Infra,Data Scientist技术上是根据公司业务逻辑来开发Model,可以看作Data方向的Service Backend,但更多时候需要承担一部分PM的工作。对于data我也没什么经验,不在此多赘述。

虽然现在有越来越多的新的岗位出来,比如亚麻的cloud support engineer,Meta的Production engineer等等,但总体而言都是可以归类为上述role的某一种或者组合。
当然也有例外,如IT Admin、Solution Architecture等等,这些岗位不是传统意义上的SDE,所以和上述domain和tech stack区别会很大,不在此赘述。

现在我本人主要在infra这块做了5年,core和ML infra都做过,掌握的技能比较杂,算是没有depth的典范。希望继续往ML Infra方向继续,点亮自己的第一个depth吧。

 

---------------------

 我之前有过一段大厂ML Infra 的工作经历。从我自己的视角看,很多同事都是Infra背景转做ML Infra的,并不需要特别的ML背景。我同意楼主的观点:“ML infra岗位估计更注重infra,ML倒只是锦上添花。”。当然加入ML Infra组以后,这些同事可以接触ML Modeling的一些工作,正好多了一个多了解ML的机会。

至于前景,个人感觉还行。毕竟每个公司但凡需要ML,就一定需要ML Infra,所以不管从升值还是跳槽角度都不会差。当然ML Infra是很大哦一块,每个公司每个组具体scope都有很大区别:从model training, model inference,到model life cycle management,distributed system,ML Ops。我觉得只有training 和inference会接触较多的ML。

 

 
我是MLE,本来做ml ops写写模型,launch,deploy, 有时候还要接触business逻辑. 然后同事离职接手了他的ml infra方面的工作. 平时就是一堆server less configuration, cicd, orchestration(lambda, step function), 做做deployment, 高级点就做data pipeline 接msk 后面把拿到的数据做realtime inference. 更日常点还需要写DBT query..感觉很多东西,但又没有堆成所谓的有depth的程度. 困境就是之后做啥不是很明朗, ml是刚需肯定的,我对这行挺有信心,但不准备在ml算法方面走那就成了sde infra. 不喜欢了后面就做其它种类的infra engineer? 我也不清楚gap多大. 就平时刷题,上学准备着下次转型.

 

个人感觉ML infra, MLOps是属于中间学科。我在带的组就是属于这个范畴,基本上搞ML AI的有几类职位. 我在我最近的一篇关于DoorDash在Data+AI Summit上的分享里面有简单提到。有兴趣可以看看https://coderstan.com/2022/07/11/mlops-at-doordash/

简单来说跟ML直接相关的(各司可能会合并或者有不同的定位,这个是个大概理解,别杠我哈哈):
Who owns the model, scientist, MLE or ML Infra Eng?
Scientist owns the model E2E taking the model to the production;
MLE helps integrate the model into the serving infra (say search/ranking query) and manage training lifecycle;
ML Infra Eng owns the infra to enable the own experiences to MLE and scientists.

如果对于这个市场发展还有前沿技术有兴趣,可以看看今年的Databricks Data+AI Summit 2022的一些分享,网址在这:https://databricks.com/dataaisummit/agenda

 ----------------------

 


具体说说ML inra的坑把。ML infra大概可以分成feature engineering,orchestration,training infra,online serving,model deploy,还有可能一些offline replay,offline ab exp之类的。还有一块是training lib/framework dev.
. Χ
training这一块:业界除了狗家压根就没几个厂用RT training。这玩意儿那么多年了基本也就是teenager sex。吹逼说两下,实际一看ROI根本没人用;distributed training基本上现在都用原生框架。做下去最后就会变成k8s devops。还有一块是model parallelism,比如超大型模型怎么跨不同机器进行训练。99%的公司压根没有这个业务需求。

orchestration就不说了。ML的脚后跟都摸不着。纯工具人。
. 1point 3acres
model deploy,纯粹做工具的工具人。做这个还有做orchestration你做上10年甚至都不用知道模型artifact里面究竟是个啥。

feature engineering实际上更偏向于big data或者data warehouse那一块。有一些和model的交集,但是不多。这也是为啥几个做数据仓库的厂都急着往ML上靠的原因。. Waral dи,

以上基本最后都会沦落为MLE的工具人,被呼来喝去搞devops,东西不work了立刻escalate甩锅。公司内部infra和platform team的通病。只有feature engineering会稍微好点。

而且ML infra还有一个比较操蛋的问题。管别的infra的组,比如管k8s和hadoop/spark的组,基本上其他产品和应用组没有别的选择。我做的再烂,你也得忍着。人家是有话语权的,可以自己决定prioritization。大部分中小厂的ML infra,你做的烂,人家MLE就不用了。escalate之后自己要HC自己搭去了。毕竟这玩意儿也没有一个统一的业界标准,很多东西也确实是随便堆几个engineer可以凑合用。反过来你要他们adopt一点什么东西,那真是比吃了屎还难。总体来说具体要做什么,怎么做,谁来做,话语权都牢牢被MLE leadership把握着。大部分公司永远是蛋蛋握在别人手里。像FB那样可以infra起一个unified platform然后逼着大家都用,再难用也得用的例子,非常非常少。. 1point 3acres

比较有技术含量的就是online serving和training lib/framework development了。前者好多公司压根没有,有也不一定碰得到ops optimization这一层,但总体来说还是比前面纯粹做工具人掏粪工强;后者基本上只有大厂有机会能碰到,而且一定僧多粥少。转行的就不用想了。

------------------

 

ML infra要做深,只能在几个大厂之间跳了。原因楼上已经说了。99%的小厂/中厂 没有需求/资源来自己从头搭。

ML infra一旦做不深,那就是devops engineer和mle的工具人。

ads ranking那套 推荐/搜索 也用得上。小/中/大厂都需要。.1point

  都是烂坑。说ML infra好的怕是连ML infra做啥都不知道。
做ML INFRA不代表你就做ML了。好多人做了好几年ML INFRA连model的边都没摸到,整天就被model team 呼来喝去。没意思。

非要俩烂坑里选一个的话:想公司里快速出impact就ads ranking,想有点跨公司经验就ML INFRA

  Ads Ranking除非有算法背景不然就是做实验的炮灰,基本学不到engineering skill

 

  ML infra 偏build platform
Ads ranking偏 business logic: 调参/model+feature engineering
如果从技术上来看 ML infra对系统方面会有更多的理解 但是现在ML infra已经被几个大公司垄断了 小公司内部的ml infra可能更多为了自身平台建的
Ads ranking如果想往上提高 需要对Business有更深的了解  以及很多学术界RL的东西可以加上去试
lz数学背景做ranking可能更Matching 不过ads ranking一般都是卷王之王组

 

 
对ads不了解. ml infra的话千完不要沦为devops. 可以了解一下组里的scope大不大, 有没有碰到model serving框架, 训练框架, 或者其他更大的轮子. 如果没有的话那么可能不太行.

 

 ML infra 就是 Software Engineer吧?干两年不爽了可以随便 跳其他的swe呀,未必非要做MLE的工具人。ads ranking eng就是MLE?这跟SWE就是完全不同的方向了,最终选哪个还是看你个人兴趣。

 

 ads ranking不是新东西。业绩很成熟。具体技术其实也就是applied ml和ml infra。看具体哪家公司,一部分工作可能和ml infra类似,也可能是ml infra的重要客户。
ml infra也看具体哪个infra。real time distributed training infra最复杂最难。workflow management和做tool差不多,和ml algorithm没啥关系。ml inference infra就是传统distributed system,和ml也没啥关系。还有就是底层和中层的专门写ml algorithm的lib的,那就要很好的ml基础了。

 

 
我只想说这个评价非常准确. ML infra如果没有大佬级别的人物支持, 基本上是做不起来的. 产品组随时可以招人自己搞一套, 反正凑和用用也不差. 产品组真不想用, 能有一万个理由不用ML infra/platform做的东西. 除非内部的ML infra / platform能在易用性, 性能等方面有较大的优势, 但这还是挺难的.

有一个方向没提到的是notebook service, 别看这东西简单. 但是data scientists没了notebook真没法干活, 一个公司一般也只有一个notebook service, 所以会比较稳. 当然, 做notebook service也不需要太多人, 没法拿到很多headcount.
.google  и
做ML infra有一点好处是能对不同的系统组件都能摸一下, 可以自己选择要不要深入了解. 实在不行, 也是可以考虑转成纯backend enginer的.


一定要兼容深度和广度 做那种容易建立护城河且适用面比较广的东西 比如技术上可以有一定深度同时context上又比较general 这样才能走的更长远

 


其实这不是ML Infra vs Modeling的问题,而是大厂vs小厂的问题。

确实,大部分厂的Infra简单,什么model deploy、orchestration基本没有,也没机会给你写什么像样的framework。但是同样的,大部分厂的modeling也没什么东西可做。比如狗家,能用的数据除了user data还有网页的crawl、各种基于语义分析或者图片视频的signal,这些东西都是靠技术积累的,中小厂就不用想了,基本都是几十个简单的feature整天来来回回调参,巧妇难为无米之炊。
楼主提到自己拿的是大中厂的offer,所以看具体哪个公司,两个方向可能都有可做的东西,还是要具体分析。

 

 

Comments

  1. 有啥低俗的 公平市场交易 都是付出劳动力换取薪资和title 过程中获取知识/credit/impact是顺其自然的衍生品 和promotion/raise不冲突

    ReplyDelete
  2. 有欲望就有弱点,有弱点的人才能被控制。你有强烈升职加薪的欲望,老板比较方便心安理得给你塞活。干好了你好我好大家好。如果老板人比较务实,也有相应的资源,直说想要升职加薪确实是个好选择。
    层主以前待在一个养老组。跟老板说想promo,老板安慰我说我们组虽然promo慢,但是wlb好呀。不过我联系提了一年之后终于给我升了。

    ReplyDelete

  3. “你知道我有重度强迫症,我干活你放心就好了” 这句话最大的问题就是你高估了自己的职业道德也高估了人性。你现在觉得自己无欲无求还能开心干活,那是你还没有经历风浪。假如你将来和老板或者组员或者公司在某些问题上起了冲突和不满怎么办?那时候你还会“强迫症”下去么?我想你大概率只会真诚的论证“这份工作这么糟糕,何况我没有提过升职,那我不干活天经地义”吧。所以你觉得一个正常人会怎么解读你那种“永远不想升职”的姿态?他会觉得你真是个好员工吗?显然不会,他只会认为你是个难以管理的人,因为找不到你的预期位置,而且还会担心你在未来拿这种事情道德绑架不干活。

    ReplyDelete


  4. 2 个极端都不好, 一个极端是我只关心学习和成长,不care comp and promo, 人家觉得你ambition 不够(没什么错,只是老板不会觉得在你身上花时间有很好的roi), 一个极端是我要 money and promo with whatever it takes, 这样人家觉得你不择手段

    比较好的方式是,你说你想要那些能得到comp and promo 的东西, 比如scope, ownership, mentoring, visibility, treated failry

    ReplyDelete
  5. 如果不是已经按照cloud native设计的infra,往云上迁移的project都是两年起

    ReplyDelete
  6. 个体的价值判断先由利益决定,是非对错只是之后的包装,让人在心理和道德上理所应当。但多方博弈之后,产生了平衡的社会默契。
    具体的话:假如一个人是勤劳的人,他就容易认为世界“应该”多劳多得;假如一个人是高智商的人,他就容易认为世界“应该”按天赋排位;假如一个人是健康的人,他就容易认为世界“不需要”照顾体弱的人;假如一个人有很多资本,他就容易认为世界“应该”按照投资分配,而不是按劳分配。
    不论是打工人,还是资本家,多数是希望少劳动、少风险,多获得。只是老板有的时候也需要依赖员工,所以会不得已去换位思考共情员工;员工也依赖老板,却不依赖别的打工人,所以对于自己的优势(比如能干活、不需要假期等)就容易共情老板,认为老板应该favor他们这类员工。
    世界多数情况已有占据优势者制定规则,每周40小时也是打工人博弈出的结果,而不是资本家认为“应该”的。

    ReplyDelete
  7. 试试把工作时间和自己的时间分开。上班的时候就不想刷题面试,专心处理工作的事情。下班了回家就不想工作的事情,专心准备跳槽。另外一天能高度精神集中的时间就那么几个小时,也不要给自己太大压力,能做多少做多少。
    你想想最坏的结果也不过是grace period期间全职准备面试了。
    平常娱乐就暂时放一放了,等找到了新工作再说。睡眠时间还是要保证

    ReplyDelete
  8. 去新的公司没根基也是容易危险。
    楼主要不内部看看,能去知根底的组,可能安全一点。
    心里要放宽,不能自己掌握的事情,不要太焦虑。话说起来容易,混绿卡的过程是挺痛苦的。坚持住

    ReplyDelete
  9. 推荐,让人类获取信息的方式发生了根本性的转变。使人们从主动到被动获取信息,迎合了人性的懒惰,才是狗最大的敌人。

    ReplyDelete


  10. 上一次大裁员,当时某互联网大厂也是裁员。也是EB2 PERM发了等PD。也是赌自己不会被裁。结果区别是侥幸没有被裁,貌似赌赢了。于是指望着熬PD没有跳槽。结果公司所有PERM因为裁员都被Audit。这一audit就是两年多。中间的煎熬就不说了,天天盼月月盼audit能早出结果。万万没想到两年后,所有的audit都被拒了。几年的等待全白费了,又要从头开始。

    当时面临两个选择,file PERM audit appeal,或者跳槽全部重来,排期+N年。于是file appeal的同时也在准备跳槽。appeal遥遥无期。最终接受跳槽offer跳走的前夕,又反转了,appeal成功了,perm批准了。TNND造化弄人啊,不过已经没有时间file 140了,还是跳槽全部从头办。。。

    当年经过的人估计已经知道是哪家了。现在绿卡多年后再看已经都是浮云。楼主其实赌输也没输多少,塞翁失马而已。放宽心享受生活😎

    ReplyDelete


  11. 如果file PERM (ETA-9089) 之前发生的layoff,如果影响到同一公司内的类似职位,会在裁员后6个月之内对新的ETA-9089产生影响。ETA-9089需要声明公司在之前6个月之内发生过layoff,并且需要额外证明招不到合适的US worker. 所以地里有 “layoff 6个月之内不能file PERM” 的说法。 source: https://www.1point3acres.com/bbs/thread-659780-1-1.html
    如果file PERM (ETA-9089) 之后发生的layoff,从理论上来说,不会影响到已经file出去、正在processing的PERM (例子:https://www.1point3acres.com/bbs/thread-634239-1-1.html 的第一个回复),但是实际上还是有大量例子证明裁员会影响已经filed PERM,会导致audit(例子:https://www.1point3acres.com/bbs/thread-595845-1-1.html 的第二个回复、https://www.1point3acres.com/bbs ... 28&pid=17885382),拖延处理时间。所以这个感觉没有定论。
    如果PERM certified之后,I-140 file之前发生的layoff,是不会有影响的,可以继续file I-140

    ReplyDelete
  12. 补充一点:i140 pp可以不要经理批准(如果你不指望公司给你报销的话)。自己pp大概需要交$2000,可以用信用卡支付。我自己的经历是交完钱之后2周就通知approval了。
    同时你可以考虑先斩后奏,先交钱pp,然后拿着pp收据找公司报销。

    ReplyDelete

  13. 2019.9才把perm发出去,2020年初通知整组被裁,这个时候还没有140. 公司保留payroll2个月,问了公司律师,2个月内即使perm下来了也不会file 140.
    慌慌张张赶紧找外面的工作,同时在公司内部看看有没有哪个组愿意收留。. 1point 3acres
    2周后在别的组找到了同级别同类型的岗位,推迟1个月再报道,出去散散心。报道第一天联系律师,让他们继续搞我的perm以及140,确定不需要做任何更改,可以直接用以前的perm。

    ReplyDelete

Post a Comment

https://gengwg.blogspot.com/

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...