程序員需要了解的大模型開發(fā)方向!
大家好呀,我是飛魚。
隨著GPT的爆火,大模型方向近期也迎來越來越多的機會和發(fā)展。
?而且作為工作幾年CRUD的后端,感覺后端開發(fā)是越來越卷了。
這里也不是鼓勵大家趕緊去轉(zhuǎn)大模型,可以先了解一下新的行業(yè),新的機會,更好的規(guī)劃自己未來的職業(yè)發(fā)展。
?現(xiàn)在招聘大模型的崗位還是比較少的,而且也出現(xiàn)很多培訓大模型的(大部分是收割韭菜的,大家也別被騙了)。
目前大模型工程師有以下幾個方向
?大模型數(shù)據(jù)工程師:
- 數(shù)據(jù)清洗/ETL/Data Engine/Pipeline
大模型平臺工程師:
- 分布式訓練/大模型集群/工程基建
大模型算法工程師:
- 搜廣推/對話機器人/AIGC等
大模型部署工程師:
- 推理加速/跨平臺/端智能/嵌入式等
就目前的現(xiàn)狀,對于數(shù)據(jù)工程師,特別是有經(jīng)驗的數(shù)據(jù)工程師,是非常稀缺的。
?多關(guān)心數(shù)據(jù),積累高質(zhì)量訓練/測試集的構(gòu)建經(jīng)驗,對數(shù)據(jù)的Sense,是最直接,也是最適合用到未來工作當中的。
想做應(yīng)用的,建議深耕某個垂直領(lǐng)域。
?比如對話機器人,問答系統(tǒng),金融/醫(yī)療/教育方向,找一個具體的場景,把它做好,做深。
每日一題
題目描述
?給定一個二叉樹,判斷它是否是 平衡二叉樹。
解題思路
?遞歸
三點注意事項:
- 左子樹是平衡二叉樹
- 右子樹是平衡二叉樹
- 左右子樹高度不超過1
代碼實現(xiàn)
Java代碼:
class Solution {
public boolean isBalanced(TreeNode root) {
//只要不存在不平衡的子樹,則整個樹平衡
return depth(root) != -1;
}
//遞歸求解每個子二叉樹的平衡性,一旦有不平衡的,遞歸向上返回-1,結(jié)束判斷
public int depth(TreeNode root) {
if (root == null) {
return 0;
}
//計算左節(jié)點的深度
int left = depth(root.left);
//計算右節(jié)點深度
int right = depth(root.right);
//如果本層根節(jié)點的二叉樹不平衡則返回-1,如果其子樹不平衡一樣
if (Math.abs(left - right) > 1 || left == -1 || right == -1) {
return -1;
}
return Math.max(left, right) + 1;
}
}
Python代碼:
class Solution:
def isBalanced(self, root):
# 只要不存在不平衡的子樹,則整個樹平衡,調(diào)用depth方法判斷,若返回值不是 -1 則表示平衡
return self.depth(root)!= -1
def depth(self, root):
if root is None:
return 0
# 計算左子樹深度
left = self.depth(root.left)
# 計算右子樹深度
right = self.depth(root.right)
# 如果本層根節(jié)點的二叉樹不平衡(左右子樹高度差絕對值大于1)或者左、右子樹有返回 -1 的情況(即不平衡),則返回 -1
if abs(left - right) > 1 or left == -1 or right == -1:
return -1
return max(left, right) + 1
Go代碼:
func (s *Solution) IsBalanced(root *TreeNode) bool {
return s.Depth(root)!= -1
}
func (s *Solution) Depth(root *TreeNode) int {
if root == nil {
return 0
}
// 遞歸計算左子樹深度
left := s.Depth(root.Left)
// 遞歸計算右子樹深度
right := s.Depth(root.Right)
// 如果當前節(jié)點的左右子樹高度差絕對值大于1,或者左、右子樹有返回 -1 的情況(即不平衡),則返回 -1
if abs(left-right) > 1 || left == -1 || right == -1 {
return -1
}
// 返回左右子樹深度最大值加1(代表加上當前節(jié)點這一層)
return max(left, right) + 1
}
// abs函數(shù)用于計算整數(shù)的絕對值
func abs(a int) int {
if a < 0 {
return -a
}
return a
}
// max函數(shù)用于返回兩個整數(shù)中的較大值
func max(a, b int) int {
if a > b {
return a
}
return b
}
復(fù)雜度分析
?時間復(fù)雜度:O(n)
- 其中 n 為二叉樹的節(jié)點個數(shù)。
空間復(fù)雜度:O(n)。
- 最壞情況下,二叉樹退化成一條鏈,遞歸需要 O(n) 的??臻g。