当前位置: 首页 > news >正文

CANN/pypto张量创建指南

Tensor的创建

【免费下载链接】pyptoPyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto

Tensor是PyPTO中的基本数据结构,用于表示将在计算图中使用并在NPU上执行的多维数组。

在PyPTO中,Tensor表示其数据的结构和属性,这使得PyPTO能够构建计算图,并在执行前对其进行优化。Tensor在执行时才包含实际值,未初始化的Tensor中的值都是随机的,在执行时需要按需初始化。

创建Tensor

  • 创建基础Tensor

    #创建形状为[2, 3]、数据类型为FP16的Tensor tensor = pypto.tensor([2, 3], pypto.DT_FP16, "my_tensor")

    参数说明:

    • shape:维度,支持整数列表。
    • dtype:表示Tensor中存储的数据类型,支持DataType类型,例如,DT_FP16表示16位半精度浮点数。
    • name:名称,支持字符串类型,可选。但建议为Tensor提供有意义的名称,以便于调试和理解计算图结构。
    • format:数据排布格式,支持TileOpFormat类型,可选,默认为:TILEOP_ND。 format显式标记时, 性能更优, 要求传入的torch tensor与pypto.Tensor声明的format一致;
  • 创建带格式的Tensor

    #使用NZ格式创建一个Tensor tensor = pypto.tensor([-1, 32], pypto.DT_FP16, "nz_tensor", pypto.TileOpFormat.TILEOP_NZ)

    支持的格式:

    • TILEOP_ND:ND格式,N维数组,在PyPTO中采用行优先模式。
    • TILEOP_NZ:NZ格式,矩阵乘相关的特殊格式。二维矩阵被分为若干个分形(分形大小更能适配一次Cube计算),分形按照列优先即N字形排布;每个分形按照行优先即Z字形排布。详细介绍请参见数据排布格式。
  • 在子函数内创建Tensor并返回至主函数

    def sub_function(): #创建形状为[2, 3]、数据类型为FP16的Tensor tensor = pypto.tensor([2, 3], pypto.DT_FP16, "my_tensor") return tensor def main_function(): sub_tensor = sub_function()
  • PyTorch的Tensor转换为PyPTO的Tensor

    # prepare data input_data = torch.rand(shape, dtype=torch.float, device='npu') output_data = torch.zeros(shape, dtype=torch.float, device='npu') #convert from torch tensor to pypto tensor pto_input = pypto.from_torch(input_data, "in_0") pto_output = pypto.from_torch(output_data, "out_0")

查看Tensor属性

Tensor包括形状(shape)、数据类型(dtype)、数据排布格式(format)、维数(dim)、名称(name)等基本属性,通过pypto.tensor相关操作接口可以查询这些属性信息。

tensor = pypto.tensor([2,3, 4], pypto.DT_FP16, "example") #形状 print(tensor.shape) #[2, 3, 4] #数据类型 print(tensor.dtype) #数据类型.DT_FP16 #维数 print(tensor.dim) # 3 #格式 print(tensor.format) #TILEOP_ND #名称 print(tensor.name) # "example" tensor.name = "new_name" #可以更改

动态维度Tensor的处理

在实际应用场景,Tensor通常是个可变长的数据。可通过以下方法定义动态Shape的Tensor,并通过-1标记动态维度:

tensor = pypto.tensor([-1, 32], pypto.DT_FP16, "dynamic") #打印tensor的维度,SymbolicScalar表示当前Shape为符号化标量 print(tensor.shape) >>> [SymbolicScalar(RUNTIME_GetInputShapeDim(ARG_dynamic,0)), 32]

通过如下方法可以获取动态维度的符号化标量,在运行时获取具体数值:

b = pypto.symbolic_scalar(tensor_shape[0])

如果Tensor继承自PyTorch Tensor,可以通过pypto.from_torch接口的参数dynamic_axis = [int]来定义动态维度的Tensor。

# prepare data input_data = torch.rand(shape, dtype=torch.float, device='npu') output_data = torch.zeros(shape, dtype=torch.float, device='npu') #convert from torch tensor to pypto tensor with dynamic axis pto_input = pypto.from_torch(input_data, "in_0", dynamic_axis=[0]) pto_output = pypto.from_torch(output_data, "out_0", dynamic_axis=[0])

【免费下载链接】pyptoPyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/862362/

相关文章:

  • Musicn安全使用指南:避免版权风险的最佳实践
  • 2026年推荐哈尔滨铜门公司选择指南 - 品牌宣传支持者
  • Windows 7 SP2终极解决方案:三步告别硬件兼容性问题,让经典系统焕发新生
  • Gemini赋能安全工程师:自动生成PoC脚本的技术实践
  • GitHub Desktop中文汉化终极指南:5分钟让英文界面变中文
  • Sixpack Redis数据存储策略:高效管理A/B测试数据的10个技巧
  • Mainframer错误排查指南:常见问题及解决方法大全
  • YOLO V8-Detection 【批量图片推理】 推理详解及部署实现
  • 2026年口碑好的售后服务远程运维网关/边缘计算数据采集网关/深圳无线数据采集网关/深圳4G数据采集网关品牌公司推荐 - 行业平台推荐
  • CANN/asc-devkit:asc_prelu函数文档
  • RISC-V异构计算中任务卸载优化与多播技术实践
  • 终极指南:如何在普通电脑上免费运行大型语言模型?BitNet 1-bit量化技术解密
  • CANN/pypto 框架问题诊断
  • “大理石纹理模糊”不是算力问题!Midjourney材质分辨率陷阱:采样步数×tile参数×--zoom的隐性冲突公式(实测提升清晰度320%)
  • 如何扩展TwicketSegmentedControl:自定义布局与动画效果
  • 如何在10分钟内掌握WiX Toolset:Windows安装包制作终极指南
  • 微信小程序二维码生成实战指南:weapp-qrcode高效解决方案
  • ARM服务器设备直通实战:从SMMUv3到VFIO的完整指南
  • Blackbone深度解析:Windows内存操作与进程注入技术实战指南
  • 10分钟搭建企业级视频会议系统:LiveKit完整指南
  • Airflow Maintenance Dags高级配置指南:变量管理、调度优化与邮件告警
  • FLUX.1-dev FP8量化模型:让中低端显卡流畅运行AI绘画的完整解决方案
  • image.nvim高级功能:虚拟填充、窗口重叠处理完全解析
  • CANN/asc-devkit asc_squeeze向量压缩API文档
  • DownKyi跨平台版终极指南:B站视频下载与音视频分离完整教程
  • 专业级Windows媒体播放解决方案:mpv.net深度解析与进阶应用
  • 链游3.0时代:GameFi+NFT+SocialFi如何引爆万亿级“数字乌托邦“?
  • 如何用Sub组织多语言脚本:Bash、Python、Ruby混合开发实战
  • 三步搞定专业音频转录:Buzz让你的电脑秒变智能字幕工作站
  • 为什么Boilr能成为开发者必备工具:零依赖优势详解