Cython(一)安装与使用

Cython是一种编译器,能将Python+C混合编码的.pyx脚本转换为C代码,有效提升Python脚本性能。本文介绍Cython的安装、文件编译及代码运行流程,包括使用pip安装、通过Cython将.pyx文件编译为.c文件,以及在Python中调用编译后的模块。

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

Cython

        Cython是让Python脚本支持C语言扩展的编译器,Cython能够将Python+C混合编码的.pyx脚本转换为C代码,主要用于优化Python脚本性能或Python调用C函数库。由于Python固有的性能差的问题,用C扩展Python成为提高Python性能常用方法,Cython算是较为常见的一种扩展方式。

在这里插入图片描述

Cython安装

       在Windows下Cython最便捷的安装方式是使用pip工具,安装命令如下所示

pip install cython

       成功安装后如下图所示

在这里插入图片描述
       当然,也可以从官网下载压缩包,解压后运行如下命令安装

python setup.py install

Cython文件编译

       Python是一门解释型语言,因此python不需要进行编译,但Cython的pyx必须要经过编译。编译步骤包括
       1、通过Cython将.pyx文件编译为.c文件
       2、通过C编译器将.c文件编译为pyd-windows(.so-linux),通过编译后的模块可以在python中通过import的形式进行调用,这一步通常是通过setuptools实现。
       下面通过经典的打印hello来说明cython文件编译过程
       1、新建hello.pyx文件,编写打印hello函数

def say_hello_to(name):
    print("Hello %s!" % name)

       2、编写setuptools setup.py如下,其中name表示模块名字,ext_modules表示编译包括的.pyx或者c文件,zip_safe置为False是为了防止使用python setup.py install编译时生成的 zipped egg文件无法在pxd文件中通过cimport方式运行的情况出现。

from setuptools import setup
from Cython.Build import cythonize

setup(
    name='Hello_world_app',
    ext_modules=cythonize("hello.pyx"),
    zip_safe=False,)

       3、在setup.py路径下打开cmd窗口,并运行如下命令

python setup.py build_ext --inplace

       编译成功后如下图所示

在这里插入图片描述
       4、在python中新建python_test.py脚本,调用打印hello模块

import hello

name = 'Li Ming'
hello.say_hello_to(name)

Cython代码运行

       1、Cython代码可以通过Jupyter notebook在Web界面中运行,Jupyter使用pip安装命令如下所示

pip install jupyter

       2、安装好后通过jupyter notebook命令调用

jupyter notebook

       3、将cython扩展加载到jupyter notebook中,然后运行cython代码
在这里插入图片描述
       4、若需要对cython代码进行详细分析,可使用命令%%cython --annotate
在这里插入图片描述

### 大模型对齐微调DPO方法详解 #### DPO简介 直接偏好优化(Direct Preference Optimization, DPO)是种用于改进大型语言模型行为的技术,该技术通过结合奖励模型训练和强化学习来提升训练效率稳定性[^1]。 #### 实现机制 DPO的核心在于它能够依据人类反馈调整模型输出的概率分布。具体来说,当给定对候选响应时,DPO试图使更受偏好的那个选项具有更高的生成概率。这种方法不仅简化了传统强化学习所需的复杂环境设置,而且显著增强了模型对于多样化指令的理解能力和执行精度[^2]。 #### PAI平台上的实践指南 为了便于开发者实施这先进理念,在PAI-QuickStart框架下提供了详尽的操作手册。这份文档覆盖了从环境配置直至完成整个微调流程所需的切细节,包括但不限于数据准备、参数设定以及性能评估等方面的内容。尤其值得注意的是,针对阿里云最新发布的开源LLM——Qwen2系列,文中给出了具体的实例说明,使得即使是初次接触此类工作的用户也能顺利上手。 ```python from transformers import AutoModelForCausalLM, Trainer, TrainingArguments model_name_or_path = "qwen-model-name" tokenizer_name = model_name_or_path training_args = TrainingArguments( output_dir="./results", per_device_train_batch_size=8, num_train_epochs=3, ) trainer = Trainer( model_init=lambda: AutoModelForCausalLM.from_pretrained(model_name_or_path), args=training_args, train_dataset=train_dataset, ) # 假设已经定义好了train_dataset trainer.train() ``` 这段代码片段展示了如何使用Hugging Face库加载预训练模型并对其进行微调的过程。虽然这里展示的例子并不完全对应于DPO的具体实现方式,但它提供了个基础模板供进步定制化开发之用[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂小小寞

原创不易,欢迎大家打赏,谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值