KR20220002823A - 딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기 - Google Patents

딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기 Download PDF

Info

Publication number
KR20220002823A
KR20220002823A KR1020210182784A KR20210182784A KR20220002823A KR 20220002823 A KR20220002823 A KR 20220002823A KR 1020210182784 A KR1020210182784 A KR 1020210182784A KR 20210182784 A KR20210182784 A KR 20210182784A KR 20220002823 A KR20220002823 A KR 20220002823A
Authority
KR
South Korea
Prior art keywords
file
operator
library
target
deep learning
Prior art date
Application number
KR1020210182784A
Other languages
English (en)
Inventor
리우제 쟝
썅 란
후이황 쩡
홍위 리우
웨이 저우
옌쥔 마
디엔하이 위
하이펑 왕
Original Assignee
베이징 바이두 넷컴 사이언스 테크놀로지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 바이두 넷컴 사이언스 테크놀로지 컴퍼니 리미티드 filed Critical 베이징 바이두 넷컴 사이언스 테크놀로지 컴퍼니 리미티드
Publication of KR20220002823A publication Critical patent/KR20220002823A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 출원은 딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기를 개시하고, 딥러닝 등 인공지능 기술 분야에 관한 것이다. 구체적인 구현 수단은 연산자의 소스 파일을 획득하는 단계; 상기 연산자의 소스 파일을 편역하여 상기 연산자의 동적 링크 라이브러리를 형성하는 단계; 상기 연산자의 동적 링크 라이브러리 전환의 인터페이스 파일을 생성하는 단계; 상기 동적 링크 라이브러리 및 상기 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하는 단계; 및 상기 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치하는 단계를 포함하고, 연산자 설치의 모든 과정을 완전히 은닉할 수 있으며, 사용자의 러닝 비용을 크게 저감할 수 있는 동시에, 딥러닝 프레임워크에서의 연산자의 배치 과정의 효율성, 융통성 및 신뢰성을 향상시킬 수 있다.

Description

딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기{METHOD, DEVICE AND ELECTRONIC EQUIPMENT FOR DEPLOYING OPERATORS IN DEEP LEARNING FRAMEWORK}
본 출원의 실시예는 총체적으로 데이터 처리 기술 분야에 관한 것으로, 더 구체적으로 딥러닝 등 인공지능 기술 분야에 관한 것이다.
현재 주요 추세의 딥러닝 프레임워크는 연산자라고 통칭하는 풍부한 텐서 계산 처리 유닛을 포함하며, 풍부한 연산자 라이브러리는 딥러닝 모델을 빠르게 구축하기 위해 강력한 기본 도구를 제공하지만 딥러닝 프레임워크의 연산자 라이브러리는 일반적으로 완전성을 달성할 수 없고, 특히 프론티어 학술 연구 분야에서 현재 연산자 라이브러리가 특정 논리 계산 조작을 만족할 수 없는 상황이 종종 있다. 따라서 주요한 딥러닝 프레임워크는 모두 사용자에게 자체 정의 연산자의 메커니즘을 제공한다.
자체 정의 연산자는 대부분 C++ 언어(The C++ Programming Language/c plus plus)로 구현되어, 소스 코드 편역을 단독으로 수행해야 하고, 동적 라이브러리로 링크한 다음 프런트엔드에 로딩 및 임포트되어 사용된다. 이를 위해, 사용자는 당해 프레임워크에 대해 어느 정도 이해해야 할 뿐만 아니라 C++ 소스 코드 편역에 대한 기본 지식도 구비해야한다. GPU(Graphics Processing Unit, 그래픽 프로세서) 기기를 지원하는 연산자의 구현과 관련될 경우, 사용자는 CUDA(Compute Unified Device Architecture, 통합 계산 기기 아키텍쳐) 편역에 대한 배경 지식도 이해해야 한다. 그 결과, 불가피하게 극도로 높은 사용자 사용 비용, 타사 라이브러리(예컨대, 라이브러리 pybind11)에 대한 강력한 의존성, 융통성 부족, 낮은 효율성과 같은 기술적 문제를 야기한다. 따라서, 딥러닝 프레임워크에서의 연산자의 배치 과정의 효율성, 융통성 및 디커플링 성능을 개선하고 사용자 사용 비용을 줄이는 방법이 중요한 연구 방향 중의 하나가 됐다.
본 출원은 딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기를 제공한다.
제1 측면에 따라 제공되는 딥러닝 프레임워크에서의 연산자의 배치 방법은,
연산자의 소스 파일을 획득하는 단계;
상기 연산자의 소스 파일을 편역하여 상기 연산자의 동적 링크 라이브러리를 형성하는 단계;
상기 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성하는 단계;
상기 동적 링크 라이브러리 및 상기 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하는 단계; 및
상기 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치하는 단계; 를 포함한다.
제2 측면에 따라 제공되는 딥러닝 프레임워크에서의 연산자의 배치 장치는,
연산자의 소스 파일을 획득하는 제1 획득 모듈;
상기 연산자의 소스 파일을 편역하여 상기 연산자의 동적 링크 라이브러리를 형성하는 형성 모듈;
상기 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성하는 제1 생성 모듈;
상기 동적 링크 라이브러리 및 상기 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하는 제2 생성 모듈; 및
상기 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치하는 설치 모듈; 을 포함한다.
제3 측면에 따라 제공되는 전자 기기는, 적어도 하나의 프로세서; 및 상기 적어도 하나의 프로세서와 통신 가능하게 연결되는 메모리를 포함하고; 상기 메모리에는 상기 적어도 하나의 프로세서에 의해 수행 가능한 명령이 저장되어 있고, 상기 명령은 상기 적어도 하나의 프로세서에 의해 수행되어, 상기 적어도 하나의 프로세서가 본 출원의 제1 측면에 따른 상기 딥러닝 프레임워크에서의 연산자의 배치 방법을 수행하도록 한다.
제4 측면에 따라 제공되는 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독 가능 저장 매체에 있어서, 상기 컴퓨터 명령이 실행될 경우 본 출원의 제1 측면에 따른 상기 딥러닝 프레임워크에서의 연산자의 배치 방법이 수행된다.
제5 측면에 따라 제공되는 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램에 있어서, 상기 컴퓨터 프로그램중의 명령이 실행될 경우, 본 출원의 제1 측면에 따른 상기 딥러닝 프레임워크에서의 연산자의 배치 방법이 수행된다.
이해 가능한 바로는 본 부분에서 설명된 내용은 본 출원의 실시예의 핵심 또는 중요한 특징을 식별하기 위한 것이 아니며, 본 출원의 범위를 한정하지도 않는다. 본 출원의 기타 특징들은 하기의 명세서에 의해 쉽게 이해될 것이다.
첨부된 도면은 본 출원의 수단을 더 잘 이해하기 위한 것으로, 본 출원에 대한 한정이 구성되지 않는다. 여기서,
도1은 본 출원의 제1 실시예에 따른 개략도이다.
도2는 본 출원의 제2 실시예에 따른 개략도이다.
도3은 본 출원의 제3 실시예에 따른 개략도이다.
도4는 본 출원의 제4 실시예에 따른 개략도이다.
도5는 본 출원의 제5 실시예에 따른 개략도이다.
도6은 Python 패키지 퍼블리싱에 따른 흐름도이다.
도7은 본 출원의 실시예의 딥러닝 프레임워크에서의 연산자의 배치 방법을 구현하기 위한 딥러닝 프레임워크에서의 연산자의 배치 장치의 블록도이다.
도8은 본 출원의 실시예의 딥러닝 프레임워크에서의 연산자의 배치 방법을 구현하기 위한 딥러닝 프레임워크에서의 연산자의 배치 장치의 블록도이다.
도9는 본 출원의 실시예의 딥러닝 프레임워크에서의 연산자의 배치를 구현하기 위한 전자 기기의 블록도이다.
이하, 첨부된 도면을 결합하여 본 출원의 예시적인 실시예에 대해 설명하며, 여기에는 이해를 돕기 위해 본 출원의 실시예의 다양한 세부 사항을 포함하므로, 이는 단지 예시적인 것으로 이해해야 한다. 따라서, 당업자는 본 출원의 범위 및 사상을 벗어나지 않는 한 여기에 설명된 실시예에 대해 다양한 변경 및 수정이 이루어질 수 있음을 인식해야 한다. 마찬가지로, 명확성과 간결성을 위해, 하기의 설명에서는 공지된 기능 및 구조에 대한 설명을 생략한다.
이하, 본 출원의 수단에 언급된 기술 분야에 대해 간단히 설명한다.
데이터 처리(Data Processing)는 데이터에 대한 수집, 저장, 검색, 처리, 변경 및 전송 등 처리를 포함하며, 목적은 무질서하고 이해할 수 없는 대량의 데이터로부터 특정 사용자에게 가치 있고 의미 있는 데이터를 추출하고 도출하는 것이다.
AI(Artificial Intelligence, 인공지능)은 인간의 특정 사유 과정 및 지능 행위(예컨대, 러닝, 추리, 사고, 계획 등)를 컴퓨터로 시뮬레이션하기 위해 연구하는 학과이며, 하드웨어 층면의 기술 뿐만 아니라 소프트웨어 층면의 기술도 포함한다. 인공지능 하드웨어 기술은 일반적으로 컴퓨터 시각 기술, 음성 인식 기술, 자연 언어 처리 기술 및 기계 러닝/딥러닝, 빅데이터 처리 기술, 지식 그래프 기술 등 몇 가지 주요 방향을 포함한다.
DL(Deep Learning, 딥러닝)은 ML(Machine Learning, 기계 러닝) 분야의 새로운 연구 방향이며, 기계 러닝에 인입되어 기계 러닝을 최초의 타겟 - 인공지능에 더 가까워지도록 한다. 딥러닝은 샘플 데이터의 내재적 법칙 및 표현 계층을 러닝하는 것이며, 이러한 러닝 과정에서 획득된 정보는 문자, 이미지 및 소리 등과 같은 데이터의 해석에 대해 큰 도움이 된다. 딥러닝의 최종 타겟은 기계로 하여금 인간과 같은 분석 러닝 능력을 구비할 수 있고, 문자, 이미지 및 소리 등과 같은 데이터를 인식할 수 있도록 한다. 딥러닝은 복잡한 기계 러닝 알고리즘이며, 음성 및 이미지 인식 측면에서 달성한 효과는 기존의 관련 기술을 훨씬 초과한다.
설명해야 하는 바로는, 관련 기술에서 자체 정의 연산자 기능을 지원하는 딥러닝 프레임워크에 대하여 편역 설치의 구현에서 다르며, 주로 setup.py(파일 편집)를 기반하는 방식 및 JIT(Just-In-Time, 즉시 편역)의 프런트엔드 로드(load) 인터페이스를 기반하는 방식의 두가지 방식을 포함한다.
여기서, setup.py를 기반하는 방식에 대하여, Pytorch 프레임워크를 예로 들어, 프런트엔드 언어 python의 setuptools 라이브러리에 의하여 사용자가 설치(install) 명령 편역을 수행하도록 지원하고, 자체 정의 연산자 라이브러리를 생성하여 사용자가 임포트(import)하여 사용하도록 지원한다.
하지만, 이러한 상황하에서 자체 정의 연산자는 Pybind11 모듈을 의존해야 하고, 사용자가 미리 설치해야 하며, 자체 정의 연산자는 Pybind11과 명시적으로 바인딩되어야 하며, 그렇지 않으면 프런트엔드에 노출되어 사용될 수 없다.
여기서, JIT의 프런트엔드 load 인터페이스를 기반하는 방식에 대하여, 인터페이스 최하위 계층은 CMake, Ninja와 같은 타사 도구에 의존하여, 사용자가 미리 설치해야 한다.
따라서, 본 출원은 딥러닝 프레임워크에서의 연산자의 배치 방법을 제공하여, 더는 Pybind11 및 기타 타사 모듈에 의존하지 않고, setuptools를 고도로 캡슐화하고, 편역, 링크, 설치의 모든 과정을 완전히 은닉하여, 사용자는 의존하는 프레임워크 최하위 계층 링크 라이브러리, 편역 옵션 등 개념적 지식을 이해할 필요가 없다. 더 나아가, 코드 주입 원리에 의하여 융통성 있는 자체 정의 python 라이브러리 설치 파일의 생성 방식을 지원하여 사용자의 러닝 비용을 크게 줄이는 동시에 딥러닝 프레임워크에서의 연산자의 배치 과정의 효율성, 융통성 및 신뢰성을 향상시킨다.
이하, 첨부된 도면을 참조하여 본 출원의 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기를 설명한다.
도1은 본 출원의 제1 실시예에 따른 개략도이다. 여기서, 설명해야 하는 바로는, 본 실시예의 딥러닝 프레임워크에서의 연산자의 배치 방법의 수행 주체는 딥러닝 프레임워크에서의 연산자의 배치 장치이며, 구체적으로 하드웨어 기기 또는 하드웨어 기기 중의 소프트웨어 등일 수 있다. 여기서, 하드웨어 기기는 예컨대 단말 기기, 서버 등이다. 도1에 도시된 바와 같이, 본 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 방법은 단계S101 내지 단계S105를 포함한다.
S101, 연산자의 소스 파일을 획득한다.
설명해야 하는 바로는, 현재 주요 추세의 딥러닝 프레임워크는 연산자라고 통칭하는 풍부한 텐서 계산 처리 유닛을 포함하며, 예컨대 시각 분야의 컨볼루션 Conv2D 연산자, 자연 언어 처리 분야의 LSTM(Long Short-Term Memory, 장단기 기억 인공 신경망) 연산자, 및 기초적인 함수 활성화 ReLU(Rectified Linear Unit, 선형 정류 함수) 연산자 등이다.
여기서, 연산자의 소스 파일은 사용자가 편역할 자체 정의 연산자(Operator, 약어 OP)에 대응되는 CPP/C++ 언어(The C++ Programming Language/c plus plus), 또는 CUDA(Compute Unified Device Architecture, 통합 계산 기기 아키텍쳐) 소스 코드 파일일 수 있다.
설명해야 하는 바로는, CPP 파일은 일반적으로 .cc 또는 .cpp로 끝나며; GPU(Graphics Processing Unit, 그래픽 처리 유닛) 기기를 지원하려면 .cu로 끝나는 CUDA 소스 코드 파일이 필요하다.
S102, 연산자의 소스 파일을 편역하여 연산자의 동적 링크 라이브러리를 형성한다.
설명해야 하는 바로는, 딥러닝 프레임워크는 일반적으로 프런트엔드 시스템(Python) 및 백엔드 시스템(C++)에 관련되여해야 한다. 사용자 자체 정의 연산자는 백엔드 C++ 코드를 편집한다. 이러한 상황하에서, 프런트엔드 Python에 의해 호출될 수 있도록 이를 특정 격식의 파일로 편역해야하고, Python 프런트엔드 시스템에서 메모리에 로딩되고, C++ 백엔드 시스템에서 구현되는 연산자 계산 논리 함수(예컨대, 컨볼루션 Conv)로 호출되도록 한다.
예를 들어, 사용자 고유의 편역 명령(즉 연산자의 소스 파일) 예컨대 Linux(전체 이름 GNU/Linux) 시스템의 gcc/g++/nvcc 명령을 호출한 후, 연산자의 동적 링크 라이브러리를 편역하여 생성할 수 있다.
본 출원의 실시예에서, 처리 대상은 C++ 또는 CUDA 소스 코드 파일이며, 전처리(Pre-processing), 편역, 어셈블리 및 링크(Linking)를 통해 연산자의 소스 파일을 편역할 수 있고, 연산자의 동적 링크 라이브러리를 형성할 수 있다.
S103, 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성한다.
설명해야 하는 바로는, 관련 기술에서 딥러닝 프레임워크는 모두 프런트엔드 시스템 및 백엔드 시스템을 포함한다. 여기서, 백엔드 시스템은 대부분 C++ 언어로 구현되는데, 여기에는 많은 연산자의 구체적인 논리 연산을 포함하는 바, 예를 들어 컨볼루션 조작 Conv의 실제 데이터 연산 조작은 C++를 통해 구현된 것이다. 이러한 상황하에서, 장점은 높은 연산 효율성 및 우수한 수행 성능에 있고; 프런트엔드 시스템은 대부분 Python 언어로 구현되고, 간단한 API(Application Programming Interface, 응용프로그램 작성 인터페이스) 인터페이스를 패키징하여 백엔드 연산자 Kernel에 대한 호출을 구현하도록 한다. 이러한 상황하에서, 장점은 낮은 구현 비용 및 좋은 사용자 체험에 있다.
본 출원의 실시예에서, 사용자가 백엔드 시스템에 대해 편집한 자체 정의 연산자에 대응되는 C++ 언어의 연산 관련 코드에만 따르면, 프런트엔드 시스템의 API 인터페이스는 자동으로 생성될 수 있으며, 즉 연산자의 동적 링크 라이브러리의 인터페이스 파일은 자동으로 생성될 수 있다.
S104, 동적 링크 라이브러리 및 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성한다.
여기서, 설치 가능한 라이브러리 파일은 파일 확장자가 .egg인 파일일 수 있다. 파일 확장자가 .egg인 파일은 Python 프로그래밍 언어가 타사 설치 가능한 라이브러리를 관리하기 위한 파일 격식이다.
본 출원의 실시예에서, 사전 설정된 패키징 전략에 따라 동적 링크 라이브러리 및 인터페이스 파일을 패키징하여 설치 가능한 라이브러리 파일을 생성하도록 한다.
S105, 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치한다.
설명해야 하는 바로는, 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치한 다음, 사용자 자체 정의 연산자를 타겟 프로그래밍 언어 라이브러리에 바로 설치할 수 있으며 사용자 후속 호출을 지원하도록 한다.
본 출원의 실시예에서, 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리의 타겟 목록에 설치할 수 있다.
본 출원의 실시예의 딥러닝 프레임워크에서의 연산자의 배치 방법에 따르면, 연산자의 소스 파일을 획득할 수 있고, 연산자의 소스 파일을 편역하여 연산자의 동적 링크 라이브러리를 형성하고, 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성한 다음, 동적 링크 라이브러리 및 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하고, 더 나아가 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치함으로써, 딥러닝 프레임워크에서의 연산자의 배치를 구현하여, 더는 타사 모듈에 의존하지 않고, 연산자 설치의 모든 과정을 완전히 은닉할 수 있으며, 사용자의 러닝 비용을 크게 저감할 수 있는 동시에, 딥러닝 프레임워크에서의 연산자의 배치 과정의 효율성, 융통성 및 신뢰성을 향상시킬 수 있다.
설명해야 하는 바로는, 본 출원에서, 연산자의 소스 파일을 편역하여 연산자의 동적 링크 라이브러리를 형성하도록 시도할 때, 전처리, 편역, 어셈블리 및 링크를 통해 연산자의 소스 파일을 편역할 수 있다.
도2는 본 출원의 제2 실시예에 따른 개략도이다. 도2에 도시된 바와 같이, 상기 실시예를 기반하여 본 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 방법은 단계S201 내지 단계S207을 포함한다.
S201, 연산자의 소스 파일을 획득한다.
당해 단계 S201은 상기 실시예의 단계 S101과 같으므로, 여기서 더 이상 설명하지 않는다.
상기 실시예의 단계 S102는 구체적으로 하기 단계 S202~S204를 포함할 수 있다.
S202, 연산자의 소스 파일에 대해 헤더 파일 확장 및 매크로 대체를 수행하여 편역할 코드를 생성하도록 한다.
본 출원의 실시예에서, 전처리 조작을 통해 편역할 코드를 생성할 수 있다.
선택적으로, 전처리기를 사용하여 소스 파일에서 "#"으로 시작하는 코드 행에 대해 헤더 파일 확장 및 매크로 대체를 수행하여 편역할 코드를 생성할 수 있다.
여기서, 파라미터를 텍스트에 대체할 수 있으며 이러한 구현은 일반적으로 정의 매크로 또는 매크로 대체, 약어 매크로라고 한다.
S203, 편역할 코드를 어셈블리 코드로 편역하고, 어셈블리 코드를 한 줄씩 바이트 코드로 변환하여 타겟 파일을 생성하도록 한다.
본 출원의 실시예에서, 전처리에 의해 생성된 편역할 코드를 편역 및 어셈블리하여 타겟 파일(Object File)을 생성할 수 있다. 여기서, 타겟 파일은 수행 가능한 파일 또는 라이브러리 파일(예컨대, 정적 라이브러리 또는 동적 라이브러리)일 수 있다.
선택적으로, 편역 단계에 대하여 편역할 코드를 최하위 계층 어셈블리 코드로 편역할 수 있다.
더 나아가, 어셈블리 단계에 대하여 어셈블리 기기를 사용하여 어셈블리 코드를 한 줄씩 바이트 코드(즉, 기계 코드)로 변환하여 타겟 파일을 생성할 수 있다.
S204, 타겟 파일을 링크 조작하여 링크된 타겟 파일을 획득하고, 링크된 타겟 파일에 따라 동적 링크 라이브러리를 생성한다.
본 출원의 실시예에서, 타겟 파일을 연결하여 동적 링크 라이브러리를 생성할 수 있다.
선택적으로, 전술한 과정에서 생성된 타겟 파일을 통합 링크하여 수행 가능한 파일 또는 라이브러리 파일(예컨대, 정적 라이브러리 또는 동적 라이브러리)을 생성할 수 있다.
설명해야 하는 바로는, 당해 단계에서 정의되지 않은 식별자의 인용은 전부 대응되는 올바른 주소로 대체된다.
S205, 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성한다.
당해 단계 S205는 상기 실시예의 단계 S103과 같으므로, 여기서 더 이상 설명하지 않는다.
S206, 동적 링크 라이브러리 및 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성한다.
선택적으로, 사전 설정된 패키징 전략에 따라 동적 링크 라이브러리 및 인터페이스 파일을 패키징하여 설치 가능한 라이브러리 파일을 생성할 수 있다.
예를 들어 설명하면, 동적 링크 라이브러리 파일 및 Python API 파일을 프런트엔드 설치 가능한 python 라이브러리 파일로 패키징할 수 있다. 선택적으로, 예컨대 setuptools와 같은 Python 언어의 고유 라이브러리에 의해 install, build, extracting(설치, 구축, 추출) 등 단계를 통해 패키징할 수 있다. 여기서, 전술한 단계는 모두 여러개의 처리 함수로 구성된다.
S207, 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치한다.
당해 단계 S207은 상기 실시예의 단계 S105와 같으므로, 여기서 더 이상 설명하지 않는다.
본 출원의 실시예의 딥러닝 프레임워크에서의 연산자의 배치 방법에 따르면, 전처리, 편역, 어셈블리 및 링크를 통해 연산자의 소스 파일을 편역하여, 모든 조작이 사용자에게 완전히 은닉되어, 사용자의 러닝 및 사용 비용을 크게 저감하고, 사용 편의성을 개선한다. 더 나아가, 임의의 타사 편역 도구 및 모듈에 의존하지 않고, 더 강한 디커플링 성능을 구비한다.
설명해야 하는 바로는, 본 출원에서 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치하려고 시도할 때, 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리의 타겟 목록에 설치할 수 있다.
사이트 소프트웨어 패키지(site-package)를 예로 들어, 파일 확장자가 .egg 격식인 설치 가능한 라이브러리 파일은 python의 표준 설치 협의 파일 격식이고, site-package에 설치될 수 있다.
여기서, Python 언어에는 많은 패키징된 타사 라이브러리를 포함하고, 각 라이브러리에는 많은 호출 가능한 API를 포함한다. 이러한 타사 라이브러리는 Python 설치 경로의 site-package 목록에 있다. 즉, site-package 목록은 많은 타사 라이브러리를 포함하는 "리포지토리"이고, Python의 모든 설치가능한 라이브러리를 관리하도록 사용될 수 있다.
더 나아가, 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치한 다음 사용자의 자체 정의 연산자를 임포트하여 사용할 수 있다.
도3은 본 출원의 제3 실시예에 따른 개략도이다. 도3에 도시된 바와 같이, 상기 실시예를 기반하여 본 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 방법은 단계S301 내지 단계S303을 포함한다.
S301, 타겟 연산자의 임포트 어구를 획득하며, 여기서, 임포트 어구는 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 프로그래밍 언어 라이브러리에 대응되는 정보를 휴대하고 있다.
설명해야 하는 바로는, python의 임포트는 키워드 "import"에 의해 구현된다. 예를 들어, A가 사전 설치된 타사 라이브러리인 경우, 사용자에 의해 편집된 임포트 어구인 import A를 획득할 수 있다.
본 출원의 실시예에서, 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치한 다음, 사용자의 자체 정의 연산자는 사용자가 편집한 import 임포트 어구에 의해 임포트되어 사용될 수 있다.
S302, 임포트 어구를 해석하여 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 타겟 서브목록을 결정한다.
예를 들어 설명하면, 임포트 어구 import A를 해석하면, 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 타겟 서브목록은 site-package 목록의 서브목록 site-package/A인 것을 결정할 수 있다.
S303, 타겟 서브목록에서 타겟 연산자의 설치 가능한 라이브러리 파일을 읽고 임포트한다.
선택적으로, import를 수행하여 임포트할 경우, 타겟 서브목록에서 타겟 연산자의 관련 설치 가능한 라이브러리 파일을 읽을 수 있고, 이를 임포트하여 후속에서 사용하도록 한다.
설명해야 하는 바로는, 본 출원에서 설치 가능한 라이브러리 파일을 설치하는 것을 통해 A와 유사하는 서브목록을 자동으로 생성할 수 있다.
예를 들어 설명하면, A.egg를 설치할 경우, 자동으로 A.egg를 디스태킹하고 대응되는 서브목록, 즉 site-package/A의 서브목록에 복사할 수 있다.
본 출원의 실시예의 딥러닝 프레임워크에서의 연산자의 배치 방법에 따르면, 타겟 연산자의 임포트 어구를 획득하고, 임포트 어구를 해석하여 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 타겟 서브목록을 결정할 수 있고, 더 나아가 타겟 서브목록에서 타겟 연산자의 설치 가능한 라이브러리 파일을 읽고 임포트하여, 일관성 및 사용 편의성이 더 향상된다.
더 나아가, 본 출원에서 코드 주입하는 방식을 통해 프레임워크와 과련된 인터페이스 파일을 입구 파일에 주입하고, 동적 링크 라이브러리의 로딩 과정 및 인터페이스 파일의 호출 방식을 커스터마이징할 수 있다.
도4는 본 출원의 제4 실시예에 따른 개략도이다. 도4에 도시된 바와 같이, 상기 실시예를 기반하여 본 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 방법은 단계S401 내지 단계S403을 포함한다.
S401, 동적 링크 라이브러리에 대응되는 주입할 함수 코드를 획득한다.
여기서, 주입할 함수 코드는 사용자가 입력한 임의의 함수 코드일 수 있다.
S402, 주입할 함수 코드를 입구 파일에 주입하여 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성한다.
가능한 구현 방식으로서, 도5에 도시된 바와 같이, 상기 실시예를 기반하여 상기 단계 S402에서 주입할 함수 코드를 입구 파일에 주입하여 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하는 단계는 단계S501 내지 단계S502를 포함한다.
S501, 입구 파일로부터 동적 링크 라이브러리의 묵인 호출 함수 코드를 획득한다.
도6에 도시된 바와 같이, 묵인 호출 함수 6-1은 __bootstrap__임을 예로 들어, __bootstrap__는 python 프런트엔드가 자체 정의 연산자 라이브러리를 임포트할 때 동적 링크 라이브러리를 로딩하는 묵인 호출 함수이고, 당해 묵인 호출 함수 Python 고유의 논리이다.
설명해야 하는 바로는, 묵인 호출 함수 코드는 api.py에 배치될 수 있다. 예를 들어 설명하면, conv.py에 대하여 사용자가 import conv 어구를 수행할 때 conv.py의 __bootstrap__ 함수를 호출할 것이다.
S502, 묵인 호출 함수 코드를 주입할 함수 코드로 대체하여 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성한다.
본 출원의 실시예에서, Python 고유의 묵인 호출 함수를 동적으로 대체하여 그의 함수 코드를 사용자가 실제 요구에 따라 주입하려는 함수 코드로 수정할 수 있다.
예를 들어 설명하면, Python 고유의 __bootstrap__ 함수를 동적으로 대체하여 그의 함수 코드를 주입할 함수 코드로 수정할 수 있다.
S403, 타겟 호출 함수 코드를 인터페이스 파일에 쓴다.
예를 들어 설명하면, 완전한 코드 주입 과정을 구현하도록 수정된 __bootstrap__ 함수 코드를 특정한 인터페이스 api.py, 예컨대 conv.py에 쓸 수 있다.
본 출원의 실시예의 딥러닝 프레임워크에서의 연산자의 배치 방법에 따르면, 동적 링크 라이브러리에 대응되는 주입할 함수 코드를 획득하고, 주입할 함수 코드를 입구 파일에 주입하여 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하고, 더 나아가 타겟 호출 함수 코드를 인터페이스 파일에 쓰고, 코드 주입하는 방식을 통해 프레임워크와 과련된 인터페이스 파일을 입구 파일에 주입하고, 동적 링크 라이브러리의 로딩 과정 및 인터페이스 파일의 호출 방식을 커스터마이징할 수 있다. 코드 주입하는 방식을 통해 원생의 동적 라이브러리 로딩 및 API 호출 방식을 대체하고, 딥러닝 프레임워크를 결합하여 python 설치 가능한 라이브러리 생성 기능을 커스터마이징하기 위해 새로운 기술적 아이디어를 제공한다.
상기 복수의 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 방법에 대응되도록, 본 출원의 실시예에서 또한 딥러닝 프레임워크에서의 연산자의 배치 장치를 제공한다. 본 출원의 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 장치는 상기 복수의 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 방법에 대응되기 때문에, 딥러닝 프레임워크에서의 연산자의 배치 방법의 실시 방식은 본 실시예에서 제공되는 딥러닝 프레임워크에서의 연산자의 배치 장치에도 적용되어, 본 실시예에서 더는 상세히 설명하지 않는다.
도7은 본 출원의 실시예에 따른 딥러닝 프레임워크에서의 연산자의 배치 장치의 구조 개략도이다.
도7에 도시된 바와 같이, 당해 딥러닝 프레임워크에서의 연산자의 배치 장치(700)는 제1 획득 모듈(710), 형성 모듈(720), 제1 생성 모듈(730), 제2 생성 모듈(740), 및 설치 모듈(750)을 포함한다.
제1 획득 모듈(710)은 연산자의 소스 파일을 획득하도록 사용된다.
형성 모듈(720)은 상기 연산자의 소스 파일을 편역하여 상기 연산자의 동적 링크 라이브러리를 형성하도록 사용된다.
제1 생성 모듈(730)은 상기 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성하도록 사용된다.
제2 생성 모듈(740)은 상기 동적 링크 라이브러리 및 상기 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하도록 사용된다.
설치 모듈(750)은 상기 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치하도록 사용된다.
도8은 본 출원의 다른 실시예에 따른 딥러닝 프레임워크에서의 연산자의 배치 장치의 구조 개략도이다.
도8에 도시된 바와 같이, 당해 딥러닝 프레임워크에서의 연산자의 배치 장치(800)는 제1 획득 모듈(810), 형성 모듈(820), 제1 생성 모듈(830), 제2 생성 모듈(840), 및 설치 모듈(850)을 포함한다.
형성 모듈(820)은,
상기 연산자의 소스 파일에 대해 헤더 파일 확장 및 매크로 대체를 수행하여 편역할 코드를 생성하는 제1 생성 서브모듈(821);
상기 편역할 코드를 어셈블리 코드로 편역하고, 상기 어셈블리 코드를 한 줄씩 바이트 코드로 변환하여 타겟 파일을 생성하는 제2 생성 서브모듈(822); 및
상기 타겟 파일을 링크 조작하여 링크된 타겟 파일을 획득하고, 상기 링크된 타겟 파일에 따라 상기 동적 링크 라이브러리를 생성하는 제3 생성 서브모듈(823); 을 포함한다.
제2 생성 모듈(840)은,
사전 설정된 패키징 전략에 따라 상기 동적 링크 라이브러리 및 상기 인터페이스 파일을 패키징하여 상기 설치 가능한 라이브러리 파일을 생성하는 제4 생성 서브모듈(841)을 포함한다.
설치 모듈(850)은,
상기 설치 가능한 라이브러리 파일을 상기 타겟 프로그래밍 언어 라이브러리의 타겟 목록에 설치하는 설치 서브모듈(851)을 포함한다.
딥러닝 프레임워크에서의 연산자의 배치 장치(800)는,
타겟 연산자의 임포트 어구를 획득하는 제2 획득 모듈(860) - 상기 임포트 어구는 상기 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 프로그래밍 언어 라이브러리에 대응되는 정보를 휴대함 -;
상기 임포트 어구를 해석하여 상기 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 타겟 서브목록을 결정하는 결정 모듈(870);
상기 타겟 서브목록에서 상기 타겟 연산자의 설치 가능한 라이브러리 파일을 읽고 임포트하는 임포트 모듈(880);
상기 동적 링크 라이브러리에 대응되는 주입할 함수 코드를 획득하는 제3 획득 모듈(890);
상기 주입할 함수 코드를 입구 파일에 주입하여 상기 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하는 주입 모듈(8100);
상기 타겟 호출 함수 코드를 상기 인터페이스 파일에 쓰는 쓰기 모듈(8110); 을 더 포함한다.
쓰기 모듈(8110)은,
상기 입구 파일로부터 상기 동적 링크 라이브러리의 묵인 호출 함수 코드를 획득하는 제1 획득 서브모듈(8111);
상기 묵인 호출 함수 코드를 상기 주입할 함수 코드로 대체하여 상기 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하는 제5 생성 서브모듈(8112)을 포함한다.
본 출원의 실시예의 딥러닝 프레임워크에서의 연산자의 배치 장치에 따르면, 연산자의 소스 파일을 획득할 수 있고, 연산자의 소스 파일을 편역하여 연산자의 동적 링크 라이브러리를 형성하고, 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성한 다음, 동적 링크 라이브러리 및 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하고, 더 나아가 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치함으로써, 딥러닝 프레임워크에서의 연산자의 배치를 구현하여, 더는 타사 모듈에 의존하지 않고, 연산자 설치의 모든 과정을 완전히 은닉할 수 있으며, 사용자의 러닝 비용을 크게 저감할 수 있는 동시에, 딥러닝 프레임워크에서의 연산자의 배치 과정의 효율성, 융통성 및 신뢰성을 향상시킬 수 있다.
본 출원의 실시예에 따라 본 출원은 또한 전자 기기, 판독 가능 저장 매체 및 컴퓨터 프로그램을 제공한다.
도9는 본 출원의 실시예를 실시하기 위한 예시적인 전자 기기(900)의 개략적 블록도이다. 전자 기기는 랩톱 컴퓨터, 데스크톱 컴퓨터, 워크 스테이션, 개인용 디지털 비서, 서버, 블레이드 서버, 메인 프레임워크 컴퓨터 및 기타 적합한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내기 위한 것이다. 전자 기기는 또한 개인용 디지털 처리, 셀룰러 폰, 스마트 폰, 웨어러블 기기 및 기타 유사한 컴퓨팅 장치와 같은 다양한 형태의 모바일 장치를 나타낼 수도 있다. 본 명세서에서 제시된 구성 요소, 이들의 연결 및 관계, 또한 이들의 기능은 단지 예일 뿐이며 본문에서 설명되거나 및/또는 요구되는 본 출원의 구현을 제한하려는 의도가 아니다.
도9에 도시된 바와 같이, 기기(900)는 컴퓨팅 유닛(901)을 포함하며, 읽기 전용 메모리(ROM)(902)에 저장된 컴퓨터 프로그램에 의해 또는 저장 유닛(908)으로부터 랜덤 액세스 메모리(RAM)(903)에 로딩된 컴퓨터 프로그램에 의해 수행되어 각종 적절한 동작 및 처리를 수행할 수 있다. RAM(903)에, 또한 기기(900)가 오퍼레이션을 수행하기 위해 필요한 각종 프로그램 및 데이터가 저장되어 있다. 컴퓨팅 유닛(901), ROM(902) 및 RAM(903)은 버스(904)를 통해 서로 연결되어 있다. 입력/출력(I/O) 인터페이스(905)도 버스(904)에 연결되어 있다.
키보드, 마우스 등과 같은 입력 유닛(906); 각종 유형의 모니터, 스피커 등과 같은 출력 유닛(907); 자기 디스크, 광 디스크 등과 같은 저장 유닛(908); 및 네트워크 카드, 모뎀, 무선 통신 트랜시버 등과 같은 통신 유닛(909)을 포함하는 기기(900) 중의 복수의 부품은 I/O 인터페이스(905)에 연결된다. 통신 유닛(909)은 장치(900)가 인터넷과 같은 컴퓨터 네트워크 및/또는 다양한 통신 네트워크를 통해 다른 기기와 정보/데이터를 교환하도록 허락한다.
컴퓨팅 유닛(901)은 프로세싱 및 컴퓨팅 능력을 구비한 다양한 범용 및/또는 전용 프로세싱 컴포넌트일 수 있다. 컴퓨팅 유닛(901)의 일부 예시는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 다양한 전용 인공 지능(AI) 컴퓨팅 칩, 기계 러닝 모델 알고리즘을 수행하는 다양한 컴퓨팅 유닛, 디지털 신호 처리기(DSP), 및 임의의 적절한 프로세서, 컨트롤러, 마이크로 컨트롤러 등을 포함하지만, 이에 제한되지 않는다. 컴퓨팅 유닛(901)은 예를 들어 딥러닝 프레임워크에서의 연산자의 배치 방법과 같은 윗글에서 설명한 각각의 방법 및 처리를 수행한다. 예를 들어, 일부 실시예에서, 딥러닝 프레임워크에서의 연산자의 배치 방법은 저장 유닛(908)과 같은 기계 판독 가능 매체에 유형적으로 포함되어 있는 컴퓨터 소프트웨어 프로그램으로 구현될 수 있다. 일부 실시예에서, 컴퓨터 프로그램의 일부 또는 전부는 ROM(902) 및/또는 통신 유닛(909)을 통해 기기(900)에 로드 및/또는 설치될 수 있다. 컴퓨터 프로그램이 RAM(903)에 로딩되고 컴퓨팅 유닛(901)에 의해 수행되는 경우, 전술한 딥러닝 프레임워크에서의 연산자의 배치 방법의 하나 또는 하나 이상의 단계를 수행할 수 있다. 대안적으로, 다른 실시예에서, 컴퓨팅 유닛(901)은 임의의 다른 적절한 방식(예를 들어, 펌웨어에 의해)을 통해 구성되어 딥러닝 프레임워크에서의 연산자의 배치 방법을 수행하도록 한다.
여기서 설명되는 시스템 및 기술의 다양한 실시 방식은 디지털 전자 회로 시스템, 집적 회로 시스템, 필드 프로그래머블 게이트 어레이(FPGA), 주문형 집적 회로(ASIC), 특정 용도 표준 제품(ASSP), 시스템온칩(SOC), 복합 프로그래머블 논리 소자(CPLD), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및 이들의 조합 중의 적어도 하나로 구현될 수 있다. 이러한 다양한 실시 방식은 하나 또는 하나 이상의 컴퓨터 프로그램에서의 구현을 포함할 수 있으며, 당해 하나 또는 하나 이상의 컴퓨터 프로그램은 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템에서 수행 및/또는 해석될 수 있고, 당해 프로그램 가능 프로세서는 전용 또는 일반용일 수 있고, 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치로부터 데이터 및 명령을 수신하고 또한 데이터 및 명령을 당해 저장 시스템, 당해 적어도 하나의 입력 장치 및 당해 적어도 하나의 출력 장치에 전송할 수 있다.
본 출원의 방법을 구현하기 위해 사용되는 프로그램 코드는 하나 또는 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 또는 기타 프로그래머블 데이터 처리 장치의 프로세서 또는 컨트롤러에 제공될 수 있으므로, 프로그램 코드가 프로세서 또는 컨트롤러에 의해 수행되는 경우, 흐름도 및/또는 블록도에서 규정한 기능/조작을 구현하도록 한다. 프로그램 코드는 전체적으로 기계에서 수행되거나, 부분적으로 기계에서 수행되거나, 독립 소프트웨어 패키지로서 부분적으로 기계에서 수행되고 부분적으로 원격 기계에서 수행되거나 또는 전체적으로 원격 기계 또는 서버에서 수행될 수 있다.
본 출원의 문맥에서, 기계 판독 가능 매체는 명령 수행 시스템, 장치 또는 기기에 의해 사용되거나 명령 수행 시스템, 장치 또는 기기와 결합하여 사용되는 프로그램을 포함하거나 저장할 수 있는 유형의 매체일 수 있다. 기계 판독 가능 매체는 기계 판독 가능 신호 매체 또는 기계 판독 가능 저장 매체일 수 있다. 기계 판독 가능 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 기기, 또는 상기 내용의 임의의 적절한 조합을 포함할 수 있지만 이에 제한되지 않는다. 기계 판독 가능 저장 매체의 더 구체적인 예시는 하나 또는 하나 이상의 전선을 기반하는 전기 연결, 휴대용 컴퓨터 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 지울 수 있는 프로그래머블 읽기 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 광학 저장 기기, 자기 저장 기기 또는 상기 내용의 임의의 적절한 조합을 포함할 수 있지만 이에 제한되지 않는다.
사용자와의 인터랙션을 제공하기 위해 여기에 설명된 시스템 및 기술은 컴퓨터에서 실시될 수 있다. 당해 컴퓨터는 사용자에게 정보를 디스플레이하기 위한 디스플레이 장치(예를 들어, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터); 및 키보드 및 포인팅 장치(예를 들어, 마우스 또는 트랙볼)를 구비하며, 사용자는 당해 키보드 및 당해 포인팅 장치를 통해 컴퓨터에 입력을 제공할 수 있다. 다른 유형의 장치를 사용하여 사용자와의 인터랙션을 제공할 수도 있으며, 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감지 피드백(예를 들어, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백)일 수 있고; 임의의 형태(소리 입력, 음성 입력 또는 촉각 입력을 포함)로 사용자로부터의 입력을 수신할 수 있다.
여기서 설명된 시스템 및 기술은 백엔드 부품을 포함하는 컴퓨팅 시스템(예를 들어, 데이터 서버로서), 또는 미들웨어 부품을 포함하는 컴퓨팅 시스템(예를 들어, 응용 서버), 또는 프런트 엔드 부품을 포함하는 컴퓨팅 시스템(예를 들어, 그래픽 사용자 인터페이스 또는 네트워크 브라우저를 구비하는 사용자 컴퓨터인 바, 사용자는 당해 그래픽 사용자 인터페이스 또는 네트워크 브라우저를 통해 여기서 설명된 시스템 및 기술의 실시 방식과 인터랙션할 수 있음), 또는 이러한 백엔드 부품, 미들웨어 부품 또는 프런트 엔드 부품의 임의의 조합을 포한하는 컴퓨팅 시스템에서 실시될 수 있다. 시스템의 부품은 임의의 형태 또는 매체의 디지털 데이터 통신(예를 들어, 통신 네트워크)을 통해 서로 연결될 수 있다. 통신 네트워크의 예시는 근거리 통신망(LAN), 광역 통신망(WAN), 인터넷 및 블록체인 네트워크를 포함한다.
컴퓨터 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 멀리 떨어져 있고, 통신 네트워크를 통해 인터랙션한다. 서로 클라이언트-서버 관계를 가지는 컴퓨터 프로그램을 대응되는 컴퓨터에서 수행하여 클라이언트와 서버 간의 관계를 생성한다. 서버는 클라우드 컴퓨팅 서버 또는 클라우드 호스트라고도 하는 클라우드 서버일 수 있고, 클라우드 컴퓨팅 서비스 시스템 중의 일종의 호스트 제품이고, 기존의 물리적 호스트 및 VPS(Virtual Private Server, 가상 사설 서버) 서비스에 존재하고 있는 관리가 어렵고 비즈니스 확장이 약한 결점을 해결하기 위한 것이다. 서버는 또한 분산 시스템의 서버, 또는 블록체인을 결합한 서버일 수 있다.
이해 가능한 바로는, 전술한 다양한 형식의 프로세스에 있어서 단계 재정렬, 추가 또는 삭제를 할 수 있다. 예를 들어, 본 출원에 개시된 기술 솔루션이 이루고자 하는 결과를 구현할 수 있는 한, 본 출원에 기재된 각 단계들은 병렬로, 순차적으로 또는 다른 순서로 수행될 수 있으나, 본 명세서에서 이에 대해 한정하지 않는다.
전술한 구체적인 실시 방식들은 본 출원의 보호 범위에 대한 한정을 구성하지 않는다. 당업자라면 본 출원의 설계 요건 및 기타 요인에 따라 다양한 수정, 조합, 서브 조합 및 대체가 이루어질 수 있음을 이해해야 한다. 본 출원의 정신과 원칙 내에서 이루어진 모든 수정, 동등한 대체 및 개선은 본 출원의 보호 범위에 포함된다.

Claims (17)

  1. 딥러닝 프레임워크에서의 연산자의 배치 방법에 있어서,
    연산자의 소스 파일을 획득하는 단계;
    상기 연산자의 소스 파일을 편역하여 상기 연산자의 동적 링크 라이브러리를 형성하는 단계;
    상기 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성하는 단계;
    상기 동적 링크 라이브러리 및 상기 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하는 단계; 및
    상기 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치하는 단계; 를 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 방법.
  2. 제1항에 있어서,
    상기 연산자의 소스 파일을 편역하여 상기 연산자의 동적 링크 라이브러리를 형성하는 단계는,
    상기 연산자의 소스 파일에 대해 헤더 파일 확장 및 매크로 대체를 수행하여 편역할 코드를 생성하는 단계;
    상기 편역할 코드를 어셈블리 코드로 편역하고, 상기 어셈블리 코드를 한 줄씩 바이트 코드로 변환하여 타겟 파일을 생성하는 단계; 및
    상기 타겟 파일을 링크 조작하여 링크된 타겟 파일을 획득하고, 상기 링크된 타겟 파일에 따라 상기 동적 링크 라이브러리를 생성하는 단계; 를 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 방법.
  3. 제1항에 있어서,
    상기 동적 링크 라이브러리 및 상기 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하는 단계는,
    사전 설정된 패키징 전략에 따라 상기 동적 링크 라이브러리 및 상기 인터페이스 파일을 패키징하여 상기 설치 가능한 라이브러리 파일을 생성하는 단계를 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 방법.
  4. 제1항에 있어서,
    상기 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치하는 단계는,
    상기 설치 가능한 라이브러리 파일을 상기 타겟 프로그래밍 언어 라이브러리의 타겟 목록에 설치하는 단계를 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 방법.
  5. 제1항에 있어서,
    타겟 연산자의 임포트 어구를 획득하는 단계 - 상기 임포트 어구는 상기 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 프로그래밍 언어 라이브러리에 대응되는 정보를 휴대함 -;
    상기 임포트 어구를 해석하여 상기 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 타겟 서브목록을 결정하는 단계; 및
    상기 타겟 서브목록에서 상기 타겟 연산자의 설치 가능한 라이브러리 파일을 읽고 임포트하는 단계; 를 더 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 방법.
  6. 제1항에 있어서,
    상기 동적 링크 라이브러리에 대응되는 주입할 함수 코드를 획득하는 단계;
    상기 주입할 함수 코드를 입구 파일에 주입하여 상기 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하는 단계; 및
    상기 타겟 호출 함수 코드를 상기 인터페이스 파일에 쓰는 단계; 를 더 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 방법.
  7. 제6항에 있어서,
    상기 주입할 함수 코드를 입구 파일에 주입하여 상기 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하는 단계는,
    상기 입구 파일로부터 상기 동적 링크 라이브러리의 묵인 호출 함수 코드를 획득하는 단계; 및
    상기 묵인 호출 함수 코드를 상기 주입할 함수 코드로 대체하여 상기 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하는 단계; 를 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 방법.
  8. 딥러닝 프레임워크에서의 연산자의 배치 장치에 있어서,
    연산자의 소스 파일을 획득하는 제1 획득 모듈;
    상기 연산자의 소스 파일을 편역하여 상기 연산자의 동적 링크 라이브러리를 형성하는 형성 모듈;
    상기 연산자의 동적 링크 라이브러리의 인터페이스 파일을 생성하는 제1 생성 모듈;
    상기 동적 링크 라이브러리 및 상기 인터페이스 파일에 따라 설치 가능한 라이브러리 파일을 생성하는 제2 생성 모듈; 및
    상기 설치 가능한 라이브러리 파일을 타겟 프로그래밍 언어 라이브러리에 설치하는 설치 모듈; 을 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 장치.
  9. 제8항에 있어서,
    상기 형성 모듈은,
    상기 연산자의 소스 파일에 대해 헤더 파일 확장 및 매크로 대체를 수행하여 편역할 코드를 생성하는 제1 생성 서브모듈;
    상기 편역할 코드를 어셈블리 코드로 편역하고, 상기 어셈블리 코드를 한 줄씩 바이트 코드로 변환하여 타겟 파일을 생성하는 제2 생성 서브모듈; 및
    상기 타겟 파일을 링크 조작하여 링크된 타겟 파일을 획득하고, 상기 링크된 타겟 파일에 따라 상기 동적 링크 라이브러리를 생성하는 제3 생성 서브모듈; 을 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 장치.
  10. 제8항에 있어서,
    상기 제2 생성 모듈은,
    사전 설정된 패키징 전략에 따라 상기 동적 링크 라이브러리 및 상기 인터페이스 파일을 패키징하여 상기 설치 가능한 라이브러리 파일을 생성하는 제4 생성 서브모듈을 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 장치.
  11. 제8항에 있어서,
    상기 설치 모듈은,
    상기 설치 가능한 라이브러리 파일을 상기 타겟 프로그래밍 언어 라이브러리의 타겟 목록에 설치하는 제1 설치 서브모듈을 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 장치.
  12. 제8항에 있어서,
    타겟 연산자의 임포트 어구를 획득하는 제2 획득 모듈 - 상기 임포트 어구는 상기 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 프로그래밍 언어 라이브러리에 대응되는 정보를 휴대함 -;
    상기 임포트 어구를 해석하여 상기 타겟 연산자의 설치 가능한 라이브러리 파일이 위치한 타겟 서브목록을 결정하는 결정 모듈; 및
    상기 타겟 서브목록에서 상기 타겟 연산자의 설치 가능한 라이브러리 파일을 읽고 임포트하는 임포트 모듈; 을 더 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 장치.
  13. 제8항에 있어서,
    상기 동적 링크 라이브러리에 대응되는 주입할 함수 코드를 획득하는 제3 획득 모듈;
    상기 주입할 함수 코드를 입구 파일에 주입하여 상기 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하는 주입 모듈; 및
    상기 타겟 호출 함수 코드를 상기 인터페이스 파일에 쓰는 쓰기 모듈; 을 더 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 장치.
  14. 제13항에 있어서,
    상기 쓰기 모듈은,
    상기 입구 파일로부터 상기 동적 링크 라이브러리의 묵인 호출 함수 코드를 획득하는 제1 획득 서브모듈; 및
    상기 묵인 호출 함수 코드를 상기 주입할 함수 코드로 대체하여 상기 동적 링크 라이브러리의 타겟 호출 함수 코드를 생성하는 제5 생성 서브모듈; 을 포함하는,
    것을 특징으로 하는 딥러닝 프레임워크에서의 연산자의 배치 장치.
  15. 전자 기기에 있어서,
    프로세서 및 메모리를 포함하고;
    상기 프로세서는 상기 메모리에 저장된 수행 가능한 프로그램 코드를 읽어 상기 수행 가능한 프로그램 코드에 대응되는 프로그램을 수행하여, 제1항 내지 제7항 중 어느 한 항에 따른 딥러닝 프레임워크에서의 연산자의 배치 방법을 구현하는,
    것을 특징으로 하는 전자 기기.
  16. 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 컴퓨터 프로그램이 프로세서에 의해 수행될 경우, 제1항 내지 제7항 중 어느 한 항에 따른 딥러닝 프레임워크에서의 연산자의 배치 방법이 구현되는,
    것을 특징으로 하는 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독 가능 저장 매체.
  17. 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 컴퓨터 프로그램중의 명령이 실행될 경우, 제1항 내지 제7항 중 어느 한 항에 따른 딥러닝 프레임워크에서의 연산자의 배치 방법이 구현되는,
    것을 특징으로 하는 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램.
KR1020210182784A 2021-03-24 2021-12-20 딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기 KR20220002823A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110315269.9 2021-03-24
CN202110315269.9A CN113010181B (zh) 2021-03-24 2021-03-24 一种深度学习框架之中算子的部署方法、装置及电子设备

Publications (1)

Publication Number Publication Date
KR20220002823A true KR20220002823A (ko) 2022-01-07

Family

ID=76406464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210182784A KR20220002823A (ko) 2021-03-24 2021-12-20 딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기

Country Status (5)

Country Link
US (1) US11531529B2 (ko)
EP (1) EP3971706B1 (ko)
JP (1) JP7324831B2 (ko)
KR (1) KR20220002823A (ko)
CN (1) CN113010181B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023146197A1 (ko) * 2022-01-27 2023-08-03 삼성전자 주식회사 애플리케이션을 백그라운드 프로세스에서 실행하는 전자 장치 및 그 동작 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157250B2 (en) * 2017-12-05 2021-10-26 Phase Change Software Llc Inductive equivalence in machine-based instruction editing
CN113591040B (zh) * 2021-06-23 2023-10-24 北京百度网讯科技有限公司 加密方法及其装置、解密方法及其装置、电子设备和介质
CN114153990A (zh) * 2021-12-07 2022-03-08 支付宝(杭州)信息技术有限公司 一种知识生产管线的构建方法、系统及装置
CN114186550B (zh) * 2021-12-10 2023-04-18 北京百度网讯科技有限公司 文本处理方法、装置、系统、设备以及存储介质
US20230236907A1 (en) * 2022-01-26 2023-07-27 Nvidia Corporation Application programming interface to cause operator to be used by compiler
CN114172908B (zh) * 2022-02-10 2022-08-05 浙江大学 一种端云协同处理方法及设备
CN114841326B (zh) * 2022-05-19 2024-01-12 北京百度网讯科技有限公司 深度学习框架的算子处理方法、装置、设备和存储介质
CN115185539B (zh) * 2022-09-06 2022-12-09 西安羚控电子科技有限公司 一种生成可执行动态链接库文件方法、装置及存储介质
CN116932092B (zh) * 2023-09-18 2024-01-09 之江实验室 一种算子调用代码自动生成的方法、装置、介质及设备

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7860823B2 (en) * 2006-05-04 2010-12-28 Microsoft Corporation Generic interface for deep embedding of expression trees in programming languages
US9703550B1 (en) * 2009-09-29 2017-07-11 EMC IP Holding Company LLC Techniques for building code entities
US8438312B2 (en) * 2009-10-23 2013-05-07 Moov Corporation Dynamically rehosting web content
CN102929716B (zh) * 2012-11-07 2015-04-15 北京亿赛通科技发展有限责任公司 一种启动多进程的方法
CN103019944A (zh) * 2013-01-10 2013-04-03 曙光信息产业(北京)有限公司 基于代码注入方式的测试方法和装置
US9817638B2 (en) 2013-12-27 2017-11-14 Symantec Corporation Systems and methods for injecting code into an application
US10175964B2 (en) * 2014-09-26 2019-01-08 Microsoft Technology Licensing, Llc Compiler caching for runtime routine redundancy tracking
CN105072461B (zh) * 2015-07-03 2019-03-08 北京奇虎科技有限公司 一种数据处理方法和装置
CN106126282A (zh) * 2016-06-20 2016-11-16 北京金山安全软件有限公司 一种动态链接库文件的注入方法、装置及终端设备
CN106502745B (zh) * 2016-10-26 2019-12-10 腾讯科技(深圳)有限公司 一种函数调用方法和装置
CN106598680A (zh) * 2016-12-20 2017-04-26 北京金山安全软件有限公司 一种程序修复、内容推广的方法、装置及电子设备
CN107038045B (zh) * 2017-03-30 2022-10-14 腾讯科技(深圳)有限公司 加载库文件的方法及装置
JP7003470B2 (ja) * 2017-07-18 2022-01-20 富士通株式会社 情報処理装置、情報処理方法、及びプログラム
US10114624B1 (en) * 2017-10-12 2018-10-30 Devfactory Fz-Llc Blackbox matching engine
CN108875959A (zh) * 2018-05-24 2018-11-23 四川斐讯信息技术有限公司 一种智能看物识名的方法和系统
CN111782334B (zh) * 2019-04-04 2024-02-23 北京智游网安科技有限公司 一种动态链接库文件虚拟化方法、存储介质及终端设备
US20200334522A1 (en) 2019-04-18 2020-10-22 Cambricon Technologies Corporation Limited Data processing method and related products
CN112183735A (zh) * 2019-07-03 2021-01-05 安徽寒武纪信息科技有限公司 操作数据的生成方法、装置及相关产品
CN111176626B (zh) * 2019-08-05 2022-04-19 腾讯科技(深圳)有限公司 跨编程语言的代码调用方法及装置、介质、设备
US11093226B2 (en) * 2019-08-14 2021-08-17 Intel Corporation Methods, systems, and apparatus for a generic firmware-based kernel library mechanism
CN110673837B (zh) * 2019-08-29 2020-11-17 腾讯科技(深圳)有限公司 代码修复方法及装置、电子设备、计算机可读存储介质
US11663523B2 (en) * 2019-09-14 2023-05-30 Oracle International Corporation Machine learning (ML) infrastructure techniques
CN110908837B (zh) * 2019-11-15 2024-03-01 珠海豹趣科技有限公司 应用程序异常处理方法、装置、电子设备及存储介质
CN110989995A (zh) * 2019-11-27 2020-04-10 开放智能机器(上海)有限公司 基于开源深度学习框架的人工智能应用的处理方法及系统
CN111290778B (zh) * 2020-02-06 2024-03-01 网易(杭州)网络有限公司 Ai模型的包装方法、平台及电子设备
US20220051093A1 (en) * 2020-08-14 2022-02-17 Nvidia Corporation Techniques for training and inference using multiple processor resources
US20220092439A1 (en) * 2020-09-23 2022-03-24 EMC IP Holding Company LLC Decoupled architecture for artificial intelligence model management
US20210191696A1 (en) * 2020-12-14 2021-06-24 Intel Corporation Methods, apparatus, and articles of manufacture to identify and interpret code
CN112507102B (zh) * 2020-12-18 2022-04-29 北京百度网讯科技有限公司 基于预训练范式模型的预测部署系统、方法、装置及介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023146197A1 (ko) * 2022-01-27 2023-08-03 삼성전자 주식회사 애플리케이션을 백그라운드 프로세스에서 실행하는 전자 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US20220035614A1 (en) 2022-02-03
EP3971706B1 (en) 2024-03-27
CN113010181B (zh) 2022-05-27
EP3971706A2 (en) 2022-03-23
EP3971706A3 (en) 2022-04-27
JP7324831B2 (ja) 2023-08-10
JP2022031507A (ja) 2022-02-18
CN113010181A (zh) 2021-06-22
US11531529B2 (en) 2022-12-20

Similar Documents

Publication Publication Date Title
KR20220002823A (ko) 딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기
US9448770B2 (en) Source code editor
CN102741812B (zh) 通过元数据抽取执行动态语言
EP3180734A1 (en) Restrictive access control for modular reflection
WO2019184687A1 (zh) 代码热更新方法和装置、存储介质、处理器及终端
WO2016163901A1 (en) An apparatus for processing an abstract syntax tree being associated with a source code of a source program
CN105022630A (zh) 一种组件管理系统及组件管理方法
EP2646906A2 (en) Map transformation in data parallel code
CN113918195A (zh) 应用界面更新方法、装置、电子设备及可读存储介质
CN111913741B (zh) 对象拦截方法、装置、介质及电子设备
US9652358B1 (en) Type widening for source code analysis
CN112506854A (zh) 页面模板文件的存储和页面生成方法、装置、设备及介质
CN116028028A (zh) 请求函数生成方法、装置、设备及存储介质
US11036527B2 (en) Class splitting in object-oriented environments
CN114217789A (zh) 功能组件拓展方法、装置、设备、存储介质及程序产品
CN109408057B (zh) 自动生成代码的方法、装置、介质和计算设备
JP7344259B2 (ja) 深層学習フレームワークにおけるパターン変換方法、装置、電子デバイス、コンピューター記憶媒体およびコンピュータープログラム製品
CN112379885B (zh) 小程序编译方法、装置、设备及可读存储介质
CN114911541A (zh) 配置信息的处理方法、装置、电子设备及存储介质
US11429358B2 (en) Representing asynchronous state machine in intermediate code
WO2022019784A1 (en) Assigning computing resources to execution of evaluators for image animation
CN112948529A (zh) 动态文本读写方法、装置、电子设备及介质
CN111782196A (zh) 基于mvp架构的开发方法及装置
CN115480744A (zh) 命令执行日志的输出方法及装置、电子设备和存储介质
CN117668824A (zh) 代码数据处理方法及装置、设备和介质