llvm/clang的在Mac OS上的安装与使用

本文详细介绍了如何在MacOS系统上安装LLVM工具链,并提供了具体的命令行操作步骤。从安装LLVM到设置环境变量,再到使用LLVM进行C语言文件的编译、生成字节码文件及汇编代码,最后到执行字节码文件的过程,都进行了详尽的说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Mac OS上的安装

通过命令:
brew install llvm

llvm会被安装在/usr/local/opt/llvm的路径下。
打开~/.bash_profile文件,添加环境变量:
export PATH="/usr/local/opt/llvm/bin:$PATH"
使用source ~/.bash_profile使.bash_profile文件文件生效

输入llvm-dis --version测试


llvm工具链的使用

创建一个C语言文件test.c

#include <stdio.h>
int main() {
  printf("hello world\n");
  return 0;
}

编译生成可执行文件:
clang test.c -o test

运行可执行文件:
test

生成llvm字节码文件:
clang -O1 -emit-llvm test.c -c -o test.bc

生成LLVM 的汇编代码 .ll 文件(可视化字节码文件)
clang -O1 -emit-llvm test.c -S -o test.ll

运行字节码文件:
lli test.bc
结果: "hello world"
.ll文件也可以用lli来执行

将 .bc 文件转化为 .ll 文件:
llvm-dis test.bc

将 .ll 文件转化为 .bc 文件:
llvm-as test.ll

编译字节码文件为汇编文件:
llc test.bc -o test.s

将 .bc 或 .ll 文件转化为本机平台的汇编代码:
llc test.bc
llc test.ll

参考链接:
https://blog.konghy.cn/2015/08/20/llvm-abstruct/
http://www.nagain.com/activity/article/4/

### 关于语言大模型微调的实际操作案例或教程 #### 大规模语言模型的微调概述 大规模预训练语言模型可以通过微调来适应特定的任务需求。这种方法利用了模型已经学到的语言表示能力,并针对具体应用场景进行优化[^1]。 #### 动态权重分配机制MoE门控 一种有效的策略是在微调过程中引入动态权重分配机制,特别是基于混合专家(MoE)架构的设计。该方法能够通过注意力门控模块实现参数的部分更新,从而减少灾难性遗忘的风险并保持较高的泛化性能。例如,在医疗问答场景下,仅需调整少量专家参数即可完成领域知识的有效注入[^2]。 以下是MoE门控机制的一个简化版本伪代码示例: ```python import torch.nn as nn import torch.nn.functional as F class MoEGate(nn.Module): def __init__(self, hidden_size, num_experts): super(MoEGate, self).__init__() self.gate = nn.Linear(hidden_size, num_experts) def forward(self, x): weights = F.softmax(self.gate(x), dim=-1) expert_mask = torch.topk(weights, k=2)[1] # 选择Top2专家 return expert_mask, weights ``` #### 阿里Qwen系列大模型微调实践 对于实际应用中的任务定制化需求,阿里云提供了详细的Qwen系列大模型微调指南。这些资源涵盖了从环境搭建到模型部署的一整套流程,帮助开发者快速掌握如何根据自己的业务特点对大模型进行针对性改进[^3]。 下面是一个简单的微调脚本框架示意: ```python from transformers import AutoModelForCausalLM, AutoTokenizer # 加载预训练模型及其分词器 model_name_or_path = "your_model_checkpoint" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) # 准备自定义数据集 train_dataset = [...] # 替换为您的训练样本列表 eval_dataset = [...] # 可选验证集合 def collate_fn(batch): """ 数据批处理函数 """ texts = [item["text"] for item in batch] labels = [item["label"] for item in batch] encodings = tokenizer(texts, padding=True, truncation=True, max_length=512, return_tensors="pt") encodings["labels"] = torch.tensor(labels).unsqueeze(-1) # 假设回归/分类任务 return encodings # 定义Trainer所需的组件 training_args = { 'output_dir': './results', 'num_train_epochs': 3, 'per_device_train_batch_size': 8, 'save_steps': 500, } trainer = CustomTrainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset, data_collator=collate_fn, ) # 开始训练过程 trainer.train() ``` 上述代码片段展示了如何加载一个现有的因果语言模型(Causal LM),并通过`transformers`库提供的工具对其进行适配和训练。注意替换掉路径名以及准备适合自己项目的输入格式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值