---
title: rec_sdk-tf1
description: 昇腾社区是基于昇腾系列处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务，包括昇腾系列处理器、系列硬件、CANN异构计算架构、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链。
keywords: 公开,样例使用介绍,容器内配套指南,使用前提,启动容器,样例介绍,DLRM,FAQ
url: https://www.hiascend.com/developer/ascendhub/detail/rec_sdk-tf1
section: (其他)
---

# rec_sdk-tf1

URL: https://www.hiascend.com/developer/ascendhub/detail/rec_sdk-tf1
描述: 昇腾社区是基于昇腾系列处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务，包括昇腾系列处理器、系列硬件、CANN异构计算架构、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链。
关键词: 公开,样例使用介绍,容器内配套指南,使用前提,启动容器,样例介绍,DLRM,FAQ

昇腾镜像仓库 [了解详情](https://www.hiascend.com/developer/ascendhub)

rec_sdk-tf1

## rec_sdk-tf1公开

最新版本：7.2.RC1-arm2025/11/27更新大小：7 GB发布者：Ascend249次下载

5.0

推荐

镜像概述

镜像下载

镜像概述

镜像下载

...

# 样例使用介绍

## 容器内配套指南

| 软件 | 版本 | 下载链接 |
| --- | --- | ---|
| Rec SDK | 7.2.RC1 | https://gitcode.com/Ascend/RecSDK/releases/7.2.RC1 |
| CANN | 8.3.RC1 | https://www.hiascend.com/developer/download/community/result?module=tf+cann&tf=8.3.RC1&cann=8.3.RC1 |
| TensorFlowAdapter | 8.3.RC1 | https://gitee.com/ascend/tensorflow/releases/tag/tfa_v0.0.44_8.3.RC1 |
| Driver | 25.3.RC1 | https://www.hiascend.com/hardware/firmware-drivers/community?product=4&model=26&cann=8.3.RC1&driver=Ascend+HDK+25.3.RC1 |
| Firmware | 25.3.RC1 | https://www.hiascend.com/hardware/firmware-drivers/community?product=4&model=26&cann=8.3.RC1&driver=Ascend+HDK+25.3.RC1 |
| TensorFlow | 1.15.0 | https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/MindX/OpenSource/python/index.html |
| Python | 3.7.5 |  |

## 使用前提

- 物理机上有Ascend 910芯片
- 物理机上已安装对应的驱动和固件
- 物理机上已安装docker
- 物理机上已安装Ascend-docker-runtime
- 跑dlrm模型需要用户自行准备对应的数据集

## 启动容器

从AscendHub [了解详情](https://www.hiascend.com/developer/ascendhub)上拉取所需架构（arm、x86）以及tf版本（tf1.15.0、tf2.6.5）的Rec SDK镜像，拉取镜像到本地。然后可以参考以下命令用拉取的镜像启动一个容器。如果需要映射数据集目录，如dlrm数据集目录，可在以下命令中添加映射：

```
docker run -it --name {容器名} --net=host -e ASCEND_VISIBLE_DEVICES=0-7 -v /usr/local/Ascend/driver/:/usr/local/Ascend/driver/ -v /etc/ascend_install.info:/etc/ascend_install.info {镜像名}:{镜像tag} /bin/bash
```

参数说明：

ASCEND_VISIBLE_DEVICES=0-7 当前机器所拥有的npu卡为0-7卡，如果是16卡可以设置为0-15，用户可根据实际情况挂载

-v /usr/local/Ascend/driver/:/usr/local/Ascend/driver/ 容器挂载的驱动目录，用户可按照实际驱动的安装目录进行配置

-v /etc/ascend_install.info:/etc/ascend_install.info 容器需挂载驱动固件安装信息，否则dlrm样例无法启动运行

## 样例介绍

demo模型代码与dlrm模型代码压缩包获取链接https://gitcode.com/Ascend/RecSDK/tree/develop_examples_and_tools [了解详情](https://gitcode.com/Ascend/RecSDK/tree/develop_examples_and_tools)。
下载并解压后，进入RecSDK-develop_examples_and_tools目录，模型代码在examples目录下。

- demo：demo样例包括little_demo的sess.run和estimator两种运行模式
- dlrm：dlrm样例为sess.run模式，目前仅适配了tf1，建议在tf1环境下运行

## demo

如需开启Rec SDK中的一些特性，如自动改图、动态扩容等，建议先查看Rec SDK社区文档 [了解详情](https://www.hiascend.com/document/detail/zh/mindsdk/72rc1/rec/recug/mxrecug_0006.html)了解相关特性。然后在脚本或者代码中开启相关特性，有些相关特性在使用时需提前安装好一些依赖（比如动态扩容，需要先安装动态扩容算子）。

little_demo代码在RecSDK-develop_examples_and_tools/examples/demo目录下，用户可选择使用sess.run模式还是estimator模式，如果选择sess.run方式，那么就使用little_demo目录下的代码；如果选择estimator方式，则使用little_demo_estimator目录下代码。

1、配置环境变量

执行以下代码配置环境变量

```
source /etc/profile
source /usr/local/Ascend/ascend-toolkit/set_env.sh
```

2、选择ranktable方案/去ranktable方案

运行Rec SDK有两种方式，一种是使用hccl配置文件（rank table方案），一种是不使用hccl配置文件（去rank table方案）。

2.1、使用hccl配置文件（rank table方案）

在物理机上使用以下命令查看NPU芯片信息，其中{ASCEND_DRIVER_PATH}代表驱动安装路径，通常是/usr/local/Ascend/driver/。{device_id}代表查看NPU加速卡ID，在单机单卡任务中通常使用0号卡，在单机多卡任务中需要依次执行查看NPU的ip地址，命令参考如下：

```
{ASCEND_DRIVER_PATH}/tools/hccn_tool -i {device_id} -ip -g
```

查询命令返回结果中“ipaddr”即为NPU卡对应的ip地址{device_ip}。注意：物理机环境中glibc版本需要2.25或者2.25以上。否则，glibc版本过低会导致上述命令失效。

创建“hccl_json_8p.json”文件，根据上一步骤中获取的{device_ip}对“hccl_json_8p.json”文件进行配置，并将其以JSON格式保存在当前目录下。

单机多卡配置样例参考如下，其中{device_ip}和{host_ip}需要根据真实环境配置进行替换，若执行单机单卡则只需在“device”中配置一项。

```
{
    "server_count":"1",
    "server_list":[
        {
            "device":[
                { "device_id":"0", "device_ip":"{device_0_ip}", "rank_id":"0" },
                { "device_id":"1", "device_ip":"{device_1_ip}", "rank_id":"1" },
                { "device_id":"2", "device_ip":"{device_2_ip}", "rank_id":"2" },
                { "device_id":"3", "device_ip":"{device_3_ip}", "rank_id":"3" },
                { "device_id":"4", "device_ip":"{device_4_ip}", "rank_id":"4" },
                { "device_id":"5", "device_ip":"{device_5_ip}", "rank_id":"5" },
                { "device_id":"6", "device_ip":"{device_6_ip}", "rank_id":"6" },
                { "device_id":"7", "device_ip":"{device_7_ip}", "rank_id":"7" }
            ],
            "server_id":"{host_ip}"
        }
    ],
    "status":"completed",
"version":"1.0"}
```

配置完成之后，执行以下命令，启动训练任务：

```
bash run.sh main.py
```

运行上述命令，出现打印如下日志即执行成功：

```
Demo done!
```

单机单卡配置样例参考如下：

```
{
    "server_count":"1",
    "server_list":[
        {
            "device":[
                { "device_id":"0", "device_ip":"{device_0_ip}", "rank_id":"0" }
            ],
            "server_id":"{host_ip}"
        }
    ],
    "status":"completed",
    "version":"1.0"
}
```

同时，使用单机单卡时需要将`run.sh`脚本中的local_rank_size修改成1。

2.2、不使用hccl配置文件（去rank table方案）

不配置hccl文件，就需要用户在run.sh脚本中确认以下几个环境变量：

- CM_CHIEF_IP：主节点ip
- CM_CHIEF_PORT：主节点监听端口
- CM_CHIEF_DEVICE：主节点device id
- CM_WORKER_IP：当前节点ip
- CM_WORKER_SIZE：参与集群训练的device数量

这几个参数具体可以参考Rec SDK发布的用户文档。确认之后使用如下命令，启动训练任务：

```
bash run.sh main.py {ip}
```

其中ip需要用户传入。

运行上述命令，出现打印如下日志即执行成功：

```
Demo done!
```

## DLRM

DLRM模型代码在RecSDK-develop_examples_and_tools/examples/dlrm目录下。

1、配置环境变量

执行以下代码配置环境变量

```
source /etc/profile
source /usr/local/Ascend/ascend-toolkit/set_env.sh
```

2、配置hccl通信文件

参考demo配置hccl通信文件

3、配置`run.sh`需要的参数

dlrm模型运行脚本是run.sh，运行此脚本需传入五个参数：so_path、rec_package_path、hccl_cfg_json以及dlrm_criteo_data_path和ip。其中，

- so_path：Rec SDK中动态库的目录，一般在Rec SDK的安装目录下的libasc目录中。在镜像中so_path是：/usr/local/python3.7.5/lib/python3.7/site-packages/mx_rec/libasc/
- rec_package_path：Rec SDK的安装目录，镜像中是：/usr/local/python3.7.5/lib/python3.7/site-packages/mx_rec/
- hccl_cfg_json：hccl_cfg_json通信配置文件所在的路径，如果配置了ip参数，该参数直接给一个""空字符串即可；如果未配置ip参数，根据步骤2配置hccl通信文件
- dlrm_criteo_data_path：dlrm模型需要的数据所在路径，根据实际情况进行配置即可
- ip：ip是运行模型的服务器的ip

4、启动脚本

- 去rank table方案

```
bash run.sh {so_path} {rec_package_path} "" {dlrm_criteo_data_path} {ip}
```

- rank table方案

```
bash run.sh {so_path} {rec_package_path} {hccl_cfg_json} {dlrm_criteo_data_path}
```

运行上述命令，出现打印如下日志即执行成功：

```
Demo done!
```

## FAQ

当在Arm环境下跑模型时，如果遇到如下报错：

```
ImportError: /usr/local/gcc7.3.0/lib64/libgomp.so.1: cannot allocate memory in static TLS block
```

解决方案：

在环境中添加如下环境变量：

```
export LD_PRELOAD=/usr/local/gcc7.3.0/lib64/libgomp.so.1
```

rec_sdk-tf1 镜像版本

| 版本 | 文件大小 | 更新时间 | 架构 | 操作 |
| --- | --- | --- | --- | ---|
| 7.2.RC1-arm | 7 GB | 2025/11/12 | arm64 | 立即下载 |
| 7.2.RC1-x86 | 8 GB | 2025/11/12 | x86_64 | 立即下载 |
| 7.1.RC1-arm | 5 GB | 2025/08/08 | arm64 | 立即下载 |
| 7.1.RC1-x86 | 5 GB | 2025/08/08 | x86_64 | 立即下载 |
| 7.0.RC1-arm | 8 GB | 2025/05/19 | arm64 | 立即下载 |
| 7.0.RC1-x86 | 9 GB | 2025/05/19 | x86_64 | 立即下载 |
