在应用中学习技术,而不是沉迷于技术本身
引言
不知道大家都是怎么学习大模型技术的,但从个人的经验和行业反馈来看,有些人在学习大模型技术时容易钻进牛角尖,导致很多东西学不明白,事倍功半。大模型技术虽然前景广阔,但学习路径的选择至关重要。本文将基于个人学习历程,讨论关于大模型技术的高效学习方法。
为什么应该注重实践?
很多人学习大模型技术是因为其爆火以及未来的发展潜力,更重要的是,不了解和学习大模型以后可能会影响职业发展。有一句名言:'以后被人工智能淘汰的不是农民工,也不是高级白领,是不会学习和使用人工智能的人。'
虽然大模型技术的前景并非完全明朗,但这并不妨碍我们学习它;关键在于应该怎么学习。在刚开始接触人工智能技术时,面对一大堆专业名词、框架、技术和架构,大多数人会感到无从下手。不论是看书还是看视频,往往听得迷迷糊糊,很多地方听不懂。
比较好的切入点是记录自己的学习过程。把自己对大模型技术的学习、理解以及思考记录下来,哪怕其中可能存在很多问题,这并不重要。重要的是在记录的同时,对大模型技术有了更加深刻的认识与理解。
写作即思考
在刚开始写关于人工智能技术的内容时,大部分是一些概念性的东西。只要是自己看到的、不懂的东西就写下来,权当是个人笔记。但在写的过程中,慢慢会发现一个问题:很多不明白的东西,写着写着就慢慢明白了。
因为写作的过程是一个重新思考的过程。很多不明白的东西,你虽然也可以照搬抄下来,但会觉得这样总是怪怪的。因此,你会主动思考,用自己的话,把自己的理解表达出来。这样,哪怕别人看不懂,但它记录的是你的学习与思考的过程。在这个过程中,你就会加深对大模型技术的理解。
再次建议一定要养成写作的习惯,哪怕你写的都是错的。学习是一个输入的过程,写作是一个输出的过程。有输入,就要有输出;否则学习的意义就不存在了。这也是为什么很多人觉得读了很多书为什么还是过不好这一生的原因;因为你学了,但并没有用出来。
避免陷入理论陷阱
学习是一个循序渐进、不断验证又不断推翻的过程。很多人钻牛角尖的原因就是想把大模型的技术与理论完全吃透。但这怎么可能呢?
在此之前,作者本人也是钻进大模型技术里无法自拔,满脑子想的就是大模型是怎么设计出来的,Transformer 架构为什么这么牛逼,自注意力机制的原理是什么?chatGPT 是怎么实现的?怎么训练和微调一个大模型,怎么在本地部署大模型等等。
这些东西有用吗?答案是有用,而且有大用;但对现阶段很多人工智能刚入门的人来说,它们没什么用。因为它们离我们太远,我们够不着,反而徒增烦恼。
在之前的学习过程中,很多人天天想自己本地部署一个大模型,然后训练一个模型。但后来发现,即使本地部署大模型又有什么用?能解决什么问题?除了能够用来吹牛之外,还有其它的实际作用吗?
有些人可能会觉得,至少熟悉了大模型是怎么部署的。但事实是,大模型的本地部署大部分人都是下载一个工具,然后把大模型下载下来就叫会部署了。但大模型在真正的企业应用中,怎么解决其性能问题、并发问题、输出质量问题?比如说,大模型的分布式部署怎么搞?有哪几种方案,每种方案的优劣是什么?
那些在本地部署大模型的人,有谁能回答上面的问题?如果能回答上面的问题,还有其它新的问题,比如长文本问题怎么解决,模型幻觉怎么解决,如果需要对大模型进行微调,怎么解决并行计算问题,在并行计算的过程中会潜藏着哪些问题?有哪些注意点?
更不用说更加细节的,用什么传播算法,损失函数怎么设计,大批量训练数据怎么处理等等。
最佳学习路径:应用驱动
最好的方式应该是在了解一些大模型的基础理论之后,找一个大模型的技术方向或应用方向,去自己深度地研究一下。
1. 构建大模型知识库 (RAG)
自己手动打造一个大模型知识库,哪怕这个知识库很简陋,但在做的过程中,肯定会遇到各种各样的问题。搭建大模型知识库面临着庞大数据的存储与检索问题,大模型的理解能力不足,该怎么解决?
技术要点:
- 数据清洗与分块 (Chunking):选择合适的 chunk size 和 overlap,确保语义完整性。
- 向量数据库选择:根据数据量和查询延迟要求选择 Milvus, Chroma, Pinecone 或 FAISS。
- Embedding 模型:选用适合中文场景的 Embedding 模型,如 BGE-M3 或 M3E。
- 检索策略:尝试混合检索(关键词 + 向量),引入重排序(Rerank)模型提升准确率。
以下是一个简单的 LangChain RAG 代码示例,帮助理解流程:
from langchain.document_loaders import TextLoader
langchain.text_splitter CharacterTextSplitter
langchain.embeddings HuggingFaceEmbeddings
langchain.vectorstores FAISS
langchain.chains RetrievalQA
loader = TextLoader()
documents = loader.load()
splitter = CharacterTextSplitter(chunk_size=, chunk_overlap=)
docs = splitter.split_documents(documents)
embeddings = HuggingFaceEmbeddings(model_name=)
vectorstore = FAISS.from_documents(docs, embeddings)
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(),
chain_type=,
retriever=vectorstore.as_retriever()
)
response = qa_chain.run()


