Model training method and device, electronic equipment and storage medium
By performing parameter conversion and Docker image construction on model training frameworks such as Megatron-DeepSpeed, and adapting to GPUs configured in different types of architectures, the problems of low training efficiency and machine utilization in the existing technology are solved, and the effects of rapid deployment and rapid training are achieved.
Patent Information
- Application Number
- CN202411976290.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-12-30
- Publication Date
- 2025-04-29
AI Technical Summary
It is difficult for the existing technology to effectively utilize model training frameworks such as Megatron-DeepSpeed, adapt to GPUs configured in different types of architectures, realize distributed large-scale model training, and have low training efficiency and machine utilization.
By performing parameter conversion on the second model training framework adapted to the second GPU, the first model training framework adapted to the first GPU is determined, and a Docker image is built, the model training environment is solidified, and a multiple training node is sent to multiple training nodes. Each node is controlled to create a Docker container and call the local GPU for model pre-training.
It realizes rapid deployment and rapid training of model training, improves training efficiency and machine utilization, adapts to GPUs configured in different types of architectures, and reduces training costs.
Smart Images

Figure CN119902888A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to the field of computer technology, and in particular to a model training method and device, an electronic device, and a storage medium. Background Art
[0002] In recent years, large language models have set off a trend in the field of artificial intelligence, and many companies want to train and deploy their own large language models more easily, quickly, and economically. However, as the models become larger, the training cost increases. Training such large models requires expensive multi-card multi-node GPU clusters, and hardware resources are expensive. Even with a GPU cluster, the training efficiency of existing open source systems is low in machine utilization. Megatron-DeepSpeed is an open source deep learning optimization library designed to improve the efficiency and scalability of large-scale model training. At present, there is an urgent need for a model training method that can use a model training framework such as Megatron-DeepSpeed to adapt its own GPU cluster to achieve distributed large model training. Summary of the invention
[0003] The present invention provides a technical solution of a model training method and device, an electronic device and a storage medium.
[0004] According to one aspect of the present disclosure, a model training method is provided, including: building a Docker image according to a first model training framework, a first software stack corresponding to a first GPU, and preset model training parameters, wherein the first model training framework is a model training framework that calls the first GPU for model training, the first model training framework is obtained after parameter conversion of the second model training framework, the second model training framework is a model training framework that calls the second GPU for model training, and the first GPU and the second GPU are GPUs with different types of architecture configurations; sending the Docker image to multiple training nodes, and controlling each training node to create a Docker container based on the Docker image, wherein the first GPU is deployed on each training node; for any training node, controlling the training node to call the first GPU deployed on the training node in the Docker container for model pre-training.
[0005] In a possible implementation, the method also includes: performing parameter conversion on a first source code corresponding to the second model training framework to obtain a second source code corresponding to the first model training framework; calling a compiler corresponding to the first GPU to perform a code compilation operation on the second source code to obtain a target executable file corresponding to the first model training framework.
[0006] In a possible implementation, the first model training framework includes: a first type of application programming interface API adapted to the first software stack, a first type of kernel function, a first type of header file, and a first type of communication library; the parameter conversion of the first source code corresponding to the second model training framework to obtain the second source code corresponding to the first model training framework includes: in the first source code, performing an interface conversion operation on the second type API to obtain the first type API, wherein the second type API is an API adapted to the second software stack corresponding to the second GPU; in the first source code, performing a replacement operation on the second type kernel function to obtain the first type kernel function, wherein the second type kernel function is a kernel function adapted to the second software stack; in the first source code, performing a replacement operation on the second type header file to obtain the first type header file, wherein the second type header file is a header file adapted to the second software stack; in the first source code, performing a replacement operation on the second type communication library to obtain the first type communication library, wherein the second type communication library is a communication library adapted to the second software stack.
[0007] In a possible implementation, the method further includes: in the first source code, screening a first type operator, and setting a comment tag for the first type operator, wherein the first type operator is an operator incompatible with the first software stack, and the comment tag is used to indicate that the first type operator is not run.
[0008] In one possible implementation, the method further includes: performing data type adaptation processing on the first software stack according to the multiple data types supported by the mixed precision acceleration model in the first model training framework to obtain an updated first software stack, wherein the updated first software stack supports the multiple data types.
[0009] According to one aspect of the present disclosure, a model training device is provided, including: a Docker image construction module, used to build a Docker image according to a first model training framework, a first software stack corresponding to a first GPU, and preset model training parameters, wherein the first model training framework is a model training framework that calls the first GPU for model training, the first model training framework is obtained after parameter conversion of the second model training framework, the second model training framework is a model training framework that calls the second GPU for model training, and the first GPU and the second GPU are GPUs with different types of architecture configurations; a Docker container creation module, used to send the Docker image to multiple training nodes, and control each training node to create a Docker container based on the Docker image, wherein the first GPU is deployed on each training node; a pre-training module, used to control any training node to call the first GPU deployed on the training node in the Docker container for model pre-training.
[0010] In one possible implementation, the device also includes: a training framework determination module, which is specifically used to: perform parameter conversion on the first source code corresponding to the second model training framework to obtain the second source code corresponding to the first model training framework; call the compiler corresponding to the first GPU to perform code compilation operations on the second source code to obtain the target executable file corresponding to the first model training framework.
[0011] In one possible implementation, the first model training framework includes: a first type of application programming interface API, a first type of kernel function, a first type of header file, and a first type of communication library adapted to the first software stack; the training framework determination module is specifically used to: in the first source code, perform an interface conversion operation on the second type API to obtain the first type API, wherein the second type API is an API adapted to the second software stack corresponding to the second GPU; in the first source code, perform a replacement operation on the second type kernel function to obtain the first type kernel function, wherein the second type kernel function is a kernel function adapted to the second software stack; in the first source code, perform a replacement operation on the second type header file to obtain the first type header file, wherein the second type header file is a header file adapted to the second software stack; in the first source code, perform a replacement operation on the second type communication library to obtain the first type communication library, wherein the second type communication library is a communication library adapted to the second software stack.
[0012] In one possible implementation, the training framework determination module is specifically used to: screen a first type of operator in the first source code, and set a comment label for the first type of operator, wherein the first type of operator is an operator incompatible with the first software stack, and the comment label is used to indicate that the first type of operator is not run.
[0013] In one possible implementation, the training framework determination module is specifically used to: perform data type adaptation processing on the first software stack according to the multiple data types supported by the mixed precision acceleration model in the first model training framework to obtain an updated first software stack, wherein the updated first software stack supports the multiple data types.
[0014] According to one aspect of the present disclosure, an electronic device is provided, comprising: a processor; and a memory for storing processor-executable instructions; wherein the processor is configured to call the instructions stored in the memory to execute the above method.
[0015] According to one aspect of the present disclosure, a computer-readable storage medium is provided, on which computer program instructions are stored, and the computer program instructions implement the above method when executed by a processor.
[0016] In the disclosed embodiment, by performing parameter conversion on the second model training framework adapted to the second GPU, a first model training framework adapted to the first GPU is determined, and the first GPU and the second GPU are GPUs configured with different types of architectures. Then, according to the first model training framework, the first software stack corresponding to the first GPU, and the preset model training parameters, a Docker image can be constructed to effectively solidify the steps for building the model training environment. After sending the Docker image to multiple training nodes, each training node is controlled to create a Docker container based on the Docker image, so that the Docker container of each training node is configured with the same model training environment. For any training node, the training node is controlled to call the first GPU deployed on the training node in the Docker container to perform model pre-training, thereby effectively realizing rapid deployment and rapid training of model training.
[0017] It should be understood that the above general description and the following detailed description are exemplary and explanatory only and do not limit the present disclosure. Other features and aspects of the present disclosure will become clear from the following detailed description of exemplary embodiments with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0018] The drawings herein are incorporated into the specification and constitute a part of the specification. These drawings illustrate embodiments consistent with the present disclosure and are used to illustrate the technical solutions of the present disclosure together with the specification.
[0019] Figure 1 A flowchart of a model training method according to an embodiment of the present disclosure is shown.
[0020] Figure 2 A block diagram of a model training device according to an embodiment of the present disclosure is shown.
[0021] Figure 3 A block diagram of an electronic device according to an embodiment of the present disclosure is shown. DETAILED DESCRIPTION
[0022] Various exemplary embodiments, features and aspects of the present disclosure will be described in detail below with reference to the accompanying drawings. The same reference numerals in the accompanying drawings represent elements with the same or similar functions. Although various aspects of the embodiments are shown in the accompanying drawings, the drawings are not necessarily drawn to scale unless otherwise specified.
[0023] The word “exemplary” is used exclusively herein to mean “serving as an example, example, or illustration.” Any embodiment described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments.
[0024] The term "and / or" herein is only a description of the association relationship of the associated objects, indicating that there may be three relationships. For example, A and / or B can represent: A exists alone, A and B exist at the same time, and B exists alone. In addition, the term "at least one" herein represents any combination of at least two of any one or more of a plurality of. For example, including at least one of A, B, and C can represent including any one or more elements selected from the set consisting of A, B, and C.
[0025] In addition, in order to better illustrate the present disclosure, numerous specific details are given in the following specific embodiments. It should be understood by those skilled in the art that the present disclosure can also be implemented without certain specific details. In some examples, methods, means, components and circuits well known to those skilled in the art are not described in detail in order to highlight the subject matter of the present disclosure.
[0026] Figure 1 A flow chart of a model training method according to an embodiment of the present disclosure is shown. The method can be executed by an electronic device such as a terminal device or a server. The terminal device can be a user equipment (UE), a mobile device, a user terminal, a terminal, a cellular phone, a cordless phone, a personal digital assistant (PDA), a handheld device, a computing device, a vehicle-mounted device, a wearable device, etc. The method can be implemented by a processor calling a computer-readable instruction stored in a memory. Alternatively, the method can be executed by a server. Figure 1 As shown, the method includes:
[0027] In step S11, a Docker image is constructed according to a first model training framework, a first software stack corresponding to the first GPU, and preset model training parameters, wherein the first model training framework is a model training framework that calls the first GPU for model training, the first model training framework is obtained after parameter conversion of the second model training framework, the second model training framework is a model training framework that calls the second GPU for model training, and the first GPU and the second GPU are GPUs with different types of architecture configurations.
[0028] The model training framework in the disclosed embodiment may be a Megatron-DeepSpeed framework that combines the two technologies of Megatron-LM and DeepSpeed, and the model training framework utilizes technologies such as model parallelism, data parallelism, and pipeline parallelism to handle the memory and computing challenges encountered when training large-scale models (e.g., large language models). The first model training framework is a first Megatron-DeepSpeed framework adapted to the first GPU, and the second model training framework is a second Megatron-DeepSpeed framework adapted to the second GPU. The first GPU and the second GPU may be GPUs produced by different GPU manufacturers, that is, the first GPU and the second GPU are GPUs configured with different types of architectures.
[0029] The second model training framework can be a model training framework that has been maturely used in related technologies. On the basis of the second model training framework, in order to enable the model training framework to adapt to the new GPU: the first GPU, the first model training framework adapted to the first GPU can be quickly obtained by performing parameter conversion on the second model training framework.
[0030] The specific process of how to determine the first model training framework will be described in detail later in conjunction with possible implementation methods of the present disclosure, and will not be elaborated here.
[0031] Since configuring the training environment is very complicated, and in a distributed training scenario, the same training environment needs to be configured on each training node. In order to simplify the configuration process of the training environment, the training environment construction steps can be solidified into a Docker file according to the first model training framework, the first software stack corresponding to the first GPU, and the preset model training parameters, and then a Docker image can be built based on the Docker file.
[0032] In step S12, the Docker image is sent to multiple training nodes, and each training node is controlled to create a Docker container based on the Docker image, wherein a first GPU is deployed on each training node.
[0033] The Docker image constructed above is sent to multiple training nodes, and each training node is controlled to create a Docker container based on the Docker image, so that the Docker container deployed on each training node has the same training environment.
[0034] In step S13, for any training node, the training node is controlled to call the first GPU deployed on the training node in the Docker container to perform model pre-training.
[0035] After deploying a Docker container with the same training environment on each training node, distributed training can be started through the master node to control each training node in the Docker container deployed on the node and call the first GPU deployed on the training node for model pre-training.
[0036] Among them, the large-scale model targeted by model pre-training can be flexibly set according to actual conditions, for example, a large language model, and this disclosure does not make specific limitations on this.
[0037] In the disclosed embodiment, by performing parameter conversion on the second model training framework adapted to the second GPU, the first model training framework adapted to the first GPU is determined, and then according to the first model training framework, the first software stack corresponding to the first GPU, and the preset model training parameters, the model training environment building steps can be effectively solidified by building a Docker image. After sending the Docker image to multiple training nodes, each training node is controlled to create a Docker container based on the Docker image, so that the Docker container of each training node is configured with the same model training environment. For any training node, the training node is controlled to call the first GPU deployed on the training node in the Docker container to perform model pre-training, thereby effectively realizing rapid deployment and rapid training of model training.
[0038] In one possible implementation, the method also includes: performing parameter conversion on a first source code corresponding to a second model training framework to obtain a second source code corresponding to the first model training framework; calling a compiler corresponding to the first GPU to perform a code compilation operation on the second source code to obtain a target executable file corresponding to the first model training framework.
[0039] Since the second model training framework is adapted to the second GPU, the working parameters of the second GPU and the first GPU may be different. Therefore, parameter conversion is performed on the first source code corresponding to the second model training framework, and the parameters adapted to the second GPU in the first source code are converted into parameters adapted to the first GPU. The second source code obtained after the conversion is the source code corresponding to the first model training framework.
[0040] In one example, the relevant parameters in the first source code can be screened and converted based on a parameter conversion tool. The specific form of the parameter conversion tool can be flexibly set based on actual conditions, and the present disclosure does not specifically limit this.
[0041] After the parameter conversion is performed at the source code level, in order to ensure that the second source code can run smoothly, the compiler corresponding to the first GPU is called to perform a code compilation operation on the second source code to obtain a target executable file corresponding to the first model training framework.
[0042] Among them, the source code is a text file written in a certain programming language, which includes the logic and instructions of the program; the executable file is a binary file compiled from the source code, which includes instructions that can be directly executed by the computer.
[0043] In the case where the second model training framework is the second Megatron-DeepSpeed framework, the second Megatron-DeepSpeed framework is developed based on the Pytorch framework, and the first software stack corresponding to the first GPU includes the torch_aaa component, which is a plug-in of the Pytorch framework, allowing the Pytorch framework to perform model training and reasoning on the first GPU, wherein aaa is the identifier of the first software stack. Therefore, the first software stack can be registered in the second Megatron-DeepSpeed framework as a custom backend, and then the parameters of the second software stack corresponding to the second GPU in the first source code corresponding to the second Megatron-DeepSpeed framework are adapted, and the parameter conversion operation is performed to obtain the parameters adapted to the first software stack, so that the call of the second Megatron-DeepSpeed framework to the second software stack is converted into the call of the first Megatron-DeepSpeed framework to the first software stack.
[0044] In one possible implementation, the first model training framework includes: a first type of application programming interface API adapted to the first software stack, a first type of kernel function, a first type of header file, and a first type of communication library; parameter conversion is performed on the first source code corresponding to the second model training framework to obtain the second source code corresponding to the first model training framework, including: in the first source code, an interface conversion operation is performed on the second type API to obtain the first type API, wherein the second type API is an API adapted to the second software stack corresponding to the second GPU; in the first source code, a replacement operation is performed on the second type kernel function to obtain the first type kernel function, wherein the second type kernel function is a kernel function adapted to the second software stack; in the first source code, a replacement operation is performed on the second type header file to obtain the first type header file, wherein the second type header file is a header file adapted to the second software stack; in the first source code, a replacement operation is performed on the second type communication library to obtain the first type communication library, wherein the second type communication library is a communication library adapted to the second software stack.
[0045] By performing parameter conversion on the second type API, second type kernel function, second type header file, and second type communication library adapted to the second GPU in the first source code corresponding to the second model training framework, the second source code corresponding to the first model training framework adapted to the first GPU can be obtained after conversion.
[0046] In the second model training framework, a large number of interactions with the second GPU backend are usually involved. Therefore, in the first source code corresponding to the second model training framework, the second software stack corresponding to the second GPU is used as the default backend, that is, the second type API in the first source code is an API adapted to the second software stack. Therefore, in the first source code, an interface conversion operation is performed on the second type API to obtain a first type API adapted to the first software stack corresponding to the first GPU.
[0047] For example, in setting the device, in the first source code, the second software stack is set as the GPU backend through the interface parameter pretrained("gpt2").to("bbb"), where bbb is the identifier of the second software stack. The first source code is subjected to an interface conversion operation to obtain the second source code. In the second source code, the first software stack is set as the GPU backend through the interface parameter pretrained("gpt2").to("aaa"), where aaa is the identifier of the first software stack.
[0048] In one example, in addition to the above-mentioned device settings, API adaptation may also include setting synchronization interfaces, setting streams, modifying data types, determining whether the backend is available, modifying C++ code interfaces, etc. It may also include other API adaptations based on actual needs, and the present disclosure does not make specific limitations on this.
[0049] In the first source code corresponding to the second model training framework, many second-type kernel functions adapted to the second software stack are included. Since the first software stack has good compatibility with the second software stack, which is mainly reflected in the interface of the driver function in the first software stack, it is similar to the interface of the driver function in the second software stack, and the interface functions are basically the same. Therefore, based on the parameter conversion tool corresponding to the first software stack, the interface of the second-type kernel function adapted to the second software stack in the first source code can be quickly replaced to obtain the first-type kernel function adapted to the first software stack in the second source code.
[0050] The first source code corresponding to the second model training framework usually includes many second-type header files adapted to the second software stack (for example, some C++ header files, header files corresponding to the above-mentioned second-type kernel functions, etc.). Therefore, in order to adapt to the first software stack, it is necessary to perform a replacement operation on the second-type header files to obtain the first-type header files adapted to the first software stack.
[0051] In the second model training framework, a second type of communication library adapted to the second software stack is used as a distributed communication library for the second GPU backend. In order to adapt to the first software stack, it is necessary to perform a replacement operation on the second type of communication library in the second model training framework to obtain the first type of communication library, so that the first model training framework can use the first type of communication library adapted to the first software stack as a distributed communication library for the first GPU backend.
[0052] In a possible implementation, the method further includes: in the first source code, screening first type operators, and setting comment tags for the first type operators, wherein the first type operators are operators incompatible with the first software stack, and the comment tags are used to indicate that the first type operators are not run.
[0053] In the first source code corresponding to the second model training framework, comment tags are set for the first type of operators that are incompatible with the first software stack, indicating that these operators are not run in the first model training framework.
[0054] For example, when the first software stack does not support the compilation capability of torch.jit, for operators such as bias_gelu and bias_dropout_add compiled by torch.jit.script in the second model training framework, these operators are screened and determined as first-type operators, and annotation labels are set for these first-type operators.
[0055] For the first type of operators that set annotation labels, since the pytorch native operators are adapted to the first software stack, the first model training framework can use the pytorch native operators with the same functions to replace the first type of operators.
[0056] In addition to the above examples, the first type of operators may also include other operators according to actual conditions, and the present disclosure does not make any specific limitations on this.
[0057] In one possible implementation, the method further includes: performing data type adaptation processing on the first software stack according to the multiple data types supported by the mixed precision acceleration model in the first model training framework to obtain an updated first software stack, wherein the updated first software stack supports the multiple data types.
[0058] When a mixed precision acceleration model is used in the first model training framework to accelerate model training, the mixed precision acceleration model supports multiple data types that may not be supported by the first software stack. In order to successfully run the first model training framework on the first software stack, it is necessary to perform data type adaptation processing on the first software stack according to the multiple data types supported by the mixed precision acceleration model in the first model training framework to obtain an updated first software stack, so that the updated first software stack can support the multiple data types required by the mixed precision acceleration model.
[0059] In the case where the first model training framework is the first Megatron-DeepSpeed framework, the mixed precision acceleration model training used in the first Megatron-DeepSpeed framework utilizes the advantages of half-precision floating point (e.g., FP16 or BF16) data types that occupy less memory and are faster to perform matrix multiplication operations, and utilizes the advantages of the wider representation range of Double and FP32 data types to solve the problems of data overflow and rounding errors. However, if the BF16 data type is not supported in the first software stack, at this time, in order to adapt the half-precision floating point data type of the mixed precision acceleration model in the first model training framework, it is necessary to perform data type adaptation processing on the first software stack so that the updated first software stack supports the FP16 data type, and the first software stack is required to support the Double type.
[0060] In one example, the large model to be trained includes an Embedding operator, but the target operator library (for example, a DNN operator library) included in the first software stack does not support the FP16 data type of the Embedding operator. It is necessary to perform data type adaptation processing on the Embedding operator in the target operator library in the first software stack so that the Embedding operator in the updated target operator library in the first software stack supports the FP16 data type.
[0061] For example, data type adaptation processing is performed in the forward propagation kernel function and the backward propagation kernel function of the Embedding operator in the target operator library in the first software stack to support the FP16 data type.
[0062] In one example, the operator scan can be performed on the large model to be trained to determine whether there is a target operator in the large model that is not adapted to the FP16 data type in the torch_aaa component included in the first software stack. For example, after operator scanning, it is determined that the target operators such as Embedding, LayerNorm, Baddbmm, and Dropout included in the large model are not adapted to the FP16 data type in the torch_aaa component. At this time, it is necessary to perform data type adaptation processing on the first software stack so that the torch_aaa component included in the first software stack supports the FP16 data type of the target operator.
[0063] The adaptation process may include: for the target operator in the first software stack, locating the code segment that performs the data type check of the target operator in the torch_aaa component, adapting the data type of the code segment, and the updated code segment includes a check for the FP16 data type, and by extending the data type check, the updated torch_aaa component can support the FP16 data type of the target operator. Since the target operator library (for example, the DNN operator library) already supports the FP16 data type, when the updated torch_aaa component calls the kernel function of the FP16 data type, the FP16 data type implementation in the target operator library can be called.
[0064] For the adaptation processing of the above-mentioned torch_aaa component, a git patch can be generated so that when the unupdated torch_aaa component is compiled, the git patch is compiled at the same time to apply the above-mentioned adaptation processing to the torch_aaa component to obtain the updated torch_aaa component.
[0065] In one example, the second GPU usually includes a tensor core computing unit, so that the computing power of the BF16 data type is usually much higher than that of the FP32 and FP16 data types. Therefore, the fusion kernel function of the second model training framework will also use the BF16 data type to accelerate the calculation. However, if the first GPU does not include a Tensor Core unit, that is, the first software stack does not support the BF16 data type, therefore, the fusion kernel function of the second model training framework is adapted to the data type, and the BF16 data type is adapted to the FP16 data type.
[0066] In one example, in order to prevent floating-point data type overflow, the first model training framework uses the Double data type for some parameters. These parameters require the reduce kernel function in the summation process. Therefore, in the first software stack, the reduce kernel function needs to be adapted to the data type so that the updated reduce kernel function supports the Double data type.
[0067] After executing the parameter conversion and data type adaptation processing at the code level, the first model training framework can be applied to the first GPU to perform model test training. During the test training process, it is detected whether there are abnormal problems. For abnormal problems, according to the type of problem, the first model training framework and / or the first software stack are further adapted, and finally the first model training framework is applied to the first GPU to successfully perform pre-training of the large model.
[0068] In one example, the problem type of the abnormal problem is: the torch_aaa component in the first software stack uses the Gemm kernel function implemented in the aaa_BLAS library by default, but the Gemm kernel function does not support the FP16 data type. The first software stack is adapted according to the problem type: since the aaa_DNN library in the first software stack supports the Gemm kernel function that supports the FP16 data type, the interface that calls the Gemm kernel function in the aaa_BLAS library in the torch_aaa component is converted to an interface that calls the Gemm kernel function in the aaa_DNN library.
[0069] In one example, the problem type of the abnormal problem is: the training loss is NaN (Not a Number). The first model training framework uses automatic mixed precision training. During the training process, the Scaler parameter is used to enlarge / reduce the training loss to minimize the underflow of the gradient. Since the reciprocal function in the aaa_DNN library in the first software stack does not support the Double data type, the Scaler parameter will continue to increase with the increase in the number of training steps. When the parameter grows to a certain extent, 1 / Scaler will underflow, resulting in NaN in the training loss. Therefore, the first software stack is adapted according to the problem type: the data type of the reciprocal function in the aaa_DNN library is adapted so that the updated reciprocal function supports the Double data type.
[0070] In one example, the problem type of the abnormal problem is: operator out of bounds. In large language models, the scale of matrix operations is usually very large, and distributed training will continue to increase the batch size of input data. When the batch size reaches a certain number (for example, 64), the Index operator will be out of bounds, resulting in a training crash. The first software stack is adapted according to the problem type: according to the needs of the training process, the matrix index INTM data type is determined (where M is a positive integer, which is the maximum number that the batch size can support when the test training runs successfully), and then the data type of the Index kernel function in the aaa_DNN library in the first software stack is adapted so that the updated Index kernel function supports the INTM data type.
[0071] In addition to the above examples, the problem types and corresponding adaptation processing may also include other contents according to actual conditions, and the present disclosure does not make specific limitations on this.
[0072] After completing the above adaptation process for the first model training framework and the first software stack, a Docker image can be built according to the preset model training parameters corresponding to the first model training framework, the first software stack, and the large model to be trained to solidify the training environment configuration steps; the above-built Docker image is sent to multiple training nodes, and each training node is controlled to create a Docker container based on the Docker image, so as to effectively achieve that the Docker container deployed on each training node has the same training environment; after the Docker container with the same training environment is deployed on each training node, distributed training can be started through the master node, and each training node can be controlled to call the first GPU deployed on the training node for model pre-training in the Docker container deployed on the node.
[0073] In the disclosed embodiment, by performing parameter conversion on the second model training framework adapted to the second GPU, a first model training framework adapted to the first GPU is determined, and the first GPU and the second GPU are GPUs configured with different types of architectures. Then, according to the first model training framework, the first software stack corresponding to the first GPU, and the preset model training parameters, a Docker image can be constructed to effectively solidify the steps for building the model training environment. After sending the Docker image to multiple training nodes, each training node is controlled to create a Docker container based on the Docker image, so that the Docker container of each training node is configured with the same model training environment. For any training node, the training node is controlled to call the first GPU deployed on the training node in the Docker container to perform model pre-training, thereby effectively realizing rapid deployment and rapid training of model training.
[0074] When the first GPU is called based on the first model training framework to perform large model distributed pre-training, there may be a relatively large performance loss. End-to-end pre-training requires a lot of resources and is very time-consuming, resulting in very high pre-training costs. Therefore, the disclosed embodiment further analyzes the performance issues of the first software stack in the process of calling the first GPU based on the first model training framework to perform large model distributed pre-training, so as to reduce the resources required for large model distributed pre-training and reduce time consumption.
[0075] In one example, performance analysis is performed at the component level (torch) of the model training framework.
[0076] First, based on the first model training framework, the first GPU is called to perform large model distributed training, and first performance data is captured during the large model distributed training process;
[0077] Then, based on the second model training framework, the second GPU is called to perform large model distributed training, and the second performance data is captured during the large model distributed training process;
[0078] Finally, by analyzing the first performance data and the second performance data, the first model training framework and the first software stack are improved.
[0079] In one example, by analyzing the first performance data, the first time consumption of multiple target operators in the process of the first model training framework calling the first GPU to perform large model distributed training is determined; by analyzing the second performance data, the second time consumption of multiple target operators in the process of the second model training framework calling the second GPU to perform large model distributed training is determined; by comparing the first time consumption and the second time consumption, the first software stack is improved.
[0080] In one example, by comparing the first time consumption and the second time consumption, it can be determined that the second time consumption is higher than the first time consumption due to the incompatibility of the first software stack operator.
[0081] By comparing the first time consumption and the second time consumption, it is determined that operators such as masked_fill, index_put, and layer_norm are not adapted in the first software stack, resulting in unreasonable data copies of these operators on the first GPU, causing the first time consumption of these operators to be higher than the second time consumption.
[0082] The following uses the index_put operator as an example to analyze how to improve the first software. Other operators are similar.
[0083] In the second GPU, the index_put operator is called when the index is assigned.
[0084] However, in the first GPU, since the first software stack is not adapted to the index_put operator, the index_put operator will copy the data to the CPU, and then call the pytorch implementation on the CPU, and copy it to the first GPU after the operation is completed. This will result in two data copies, resulting in a high time consumption.
[0085] Therefore, the index_put operator is adapted in the first software stack to achieve that in the first GPU, the index_put operator is called when the index is assigned, and only one data copy takes time.
[0086] In one example, by comparing the first time consumption with the second time consumption, it can be determined that there are multiple consecutive data copies in the forward process, resulting in the second time consumption being longer than the first time consumption.
[0087] The first data copy is not far from the lt operator on the left. The corresponding code is determined to be the index assignment part in the build_mask_matrix function. There are multiple clone copies later. The last clone has several operators such as ge, is_nonzero, lt, and sub. It is determined that these operators have entered Vocab Parallel Embedding, so this part should be to convert the model input from float32 to float16. The corresponding code location is: GPT Model Pipe. This part will bring a large number of small operator data copies, and the calculation density and memory access utilization are relatively low, resulting in multiple consecutive data copies in the forward process, which is time-consuming.
[0088] Therefore, the first software stack is optimized to fuse this part of the code into a larger fusion operator, thereby improving memory access efficiency and overall performance, thereby effectively reducing time consumption.
[0089] In one example, by comparing the first time consumption and the second time consumption, it can be determined that there are many small operators in the forward process, which causes the second time consumption to be higher than the first time consumption.
[0090] Analysis found that there are a large number of small operators with short functions in the forward process of the second software stack. Since these small operators are in front of the build_single_mask position, they are mainly in the data preprocessing part. Then these operators are called in a loop in the select-gt-select-is_nonzero-mul mode. The judgment position is: _build_key_size_numel_dictionaries. By analyzing the code, it is found that this continuous operation is run on the CPU, and the total time is about 1ms.
[0091] Therefore, the first software stack is optimized to put these small operator operations on the first GPU, reducing the time consumption from 1 ms to 0.17 ms, which is effectively lower.
[0092] In one example, performance analysis is performed at the kernel function level of the model training framework.
[0093] First, based on the first model training framework, the first GPU is called to perform large model distributed training, and during the large model distributed training process, a roofline curve is determined. The roofline curve is used to evaluate the relationship between computing performance and hardware resource utilization;
[0094] Then, according to the roofline curve, the throughput is calculated to optimize the computation-intensive kernel function, and the memory access efficiency is calculated to optimize the memory access-intensive kernel function.
[0095] In one example, it is determined based on the throughput calculated by the roofline curve that the computational efficiency of a certain computationally intensive kernel function at certain sizes is lower than expected. In this case, the performance of the computationally intensive kernel function at these sizes may be optimized.
[0096] In one example, according to the memory access efficiency calculated by the roofline curve, it is determined that the memory access efficiency of a certain memory-intensive kernel function (for example, unary kernel function, gelu, etc.) is lower than expected. The reason is that the input data of these kernel functions has a transposition operation, which makes the non-continuous torch call the Contiguous function to make the input data continuous before calling the DNN operator for calculation, while the unary kernel function calculation is performed element by element, and there is no need to make the input data continuous.
[0097] Therefore, the Contiguous function can be removed, and CreateMUTensor that supports stride transfer can be used when creating a Tensor. The stride attribute of the input data can be passed in together, and then the unary kernel function of the DNN operator can be directly called for calculation, so that the memory access efficiency meets expectations.
[0098] In the process of calling the first GPU to perform large model pre-training based on the first model training framework, the performance issues of the first software stack can also be analyzed from other aspects according to actual needs, and the present disclosure does not make specific limitations on this.
[0099] It can be understood that the above-mentioned various method embodiments mentioned in the present disclosure can be combined with each other to form a combined embodiment without violating the principle logic. Due to space limitations, the present disclosure will not repeat them. It can be understood by those skilled in the art that in the above-mentioned method of the specific implementation method, the specific execution order of each step should be determined according to its function and possible internal logic.
[0100] In addition, the present disclosure also provides a model training device, an electronic device, a computer-readable storage medium, and a program, all of which can be used to implement any model training method provided by the present disclosure. The corresponding technical solutions and descriptions are referred to the corresponding records in the method part and will not be repeated here.
[0101] Figure 2 A block diagram of a model training device according to an embodiment of the present disclosure is shown. Figure 2 As shown, the device 20 includes:
[0102] A Docker image building module 21 is used to build a Docker image according to a first model training framework, a first software stack corresponding to a first GPU, and preset model training parameters, wherein the first model training framework is a model training framework that calls the first GPU for model training, the first model training framework is obtained after parameter conversion of the second model training framework, the second model training framework is a model training framework that calls the second GPU for model training, and the first GPU and the second GPU are GPUs with different types of architecture configurations;
[0103] A Docker container creation module 22, used to send the Docker image to multiple training nodes, and control each training node to create a Docker container based on the Docker image, wherein a first GPU is deployed on each training node;
[0104] The pre-training module 23 is used to control any training node to call the first GPU deployed on the training node in the Docker container to perform model pre-training.
[0105] In a possible implementation, the apparatus 20 further includes: a training framework determination module, specifically configured to:
[0106] Performing parameter conversion on the first source code corresponding to the second model training framework to obtain the second source code corresponding to the first model training framework;
[0107] Call the compiler corresponding to the first GPU, perform a code compilation operation on the second source code, and obtain a target executable file corresponding to the first model training framework.
[0108] In a possible implementation, the first model training framework includes: a first type of application programming interface API adapted to the first software stack, a first type of kernel function, a first type of header file, and a first type of communication library;
[0109] The training framework determines the module, which is specifically used for:
[0110] In the first source code, an interface conversion operation is performed on the second type API to obtain the first type API, wherein the second type API is an API adapted to a second software stack corresponding to the second GPU;
[0111] In the first source code, a replacement operation is performed on the second type kernel function to obtain the first type kernel function, wherein the second type kernel function is a kernel function adapted to the second software stack;
[0112] In the first source code, a replacement operation is performed on the second type header file to obtain the first type header file, wherein the second type header file is a header file adapted to the second software stack;
[0113] In the first source code, a replacement operation is performed on the second type communication library to obtain the first type communication library, wherein the second type communication library is a communication library adapted to the second software stack.
[0114] In a possible implementation, the training framework determination module is specifically used to:
[0115] In the first source code, first type operators are screened, and comment tags are set for the first type operators, wherein the first type operators are operators incompatible with the first software stack, and the comment tags are used to indicate that the first type operators are not to be run.
[0116] In a possible implementation, the training framework determination module is specifically used to:
[0117] According to the multiple data types supported by the mixed precision acceleration model in the first model training framework, data type adaptation processing is performed on the first software stack to obtain an updated first software stack, wherein the updated first software stack supports multiple data types.
[0118] This method has a specific technical connection with the internal structure of the computer system, and can solve the technical problem of how to improve the hardware computing efficiency or execution effect (including reducing the amount of data storage, reducing the amount of data transmission, increasing the hardware processing speed, etc.), thereby obtaining the technical effect of improving the internal performance of the computer system in accordance with the laws of nature.
[0119] In some embodiments, the functions or modules included in the device provided by the embodiments of the present disclosure can be used to execute the method described in the above method embodiments. The specific implementation can refer to the description of the above method embodiments, and for the sake of brevity, it will not be repeated here.
[0120] The embodiment of the present disclosure also provides a computer-readable storage medium on which computer program instructions are stored, and the computer program instructions implement the above method when executed by a processor. The computer-readable storage medium can be a volatile or non-volatile computer-readable storage medium.
[0121] An embodiment of the present disclosure further proposes an electronic device, comprising: a processor; and a memory for storing instructions executable by the processor; wherein the processor is configured to call the instructions stored in the memory to execute the above method.
[0122] The embodiments of the present disclosure also provide a computer program product, including a computer-readable code, or a non-volatile computer-readable storage medium carrying the computer-readable code. When the computer-readable code runs in a processor of an electronic device, the processor in the electronic device executes the above method.
[0123] The electronic device may be provided as a terminal, a server, or a device in other forms.
[0124] Figure 3 A block diagram of an electronic device according to an embodiment of the present disclosure is shown. Figure 3 , the electronic device 1900 can be provided as a server or a terminal device. Figure 3 , the electronic device 1900 includes a processing component 1922, which further includes one or more processors, and a memory resource represented by a memory 1932 for storing instructions executable by the processing component 1922, such as an application. The application stored in the memory 1932 may include one or more modules, each corresponding to a set of instructions. In addition, the processing component 1922 is configured to execute instructions to perform the above method.
[0125] The electronic device 1900 may also include a power supply component 1926 configured to perform power management of the electronic device 1900, a wired or wireless network interface 1950 configured to connect the electronic device 1900 to a network, and an input / output interface 1958. The electronic device 1900 may operate based on an operating system stored in the memory 1932, such as a Microsoft Server operating system (Windows Server 2003). TM ), a graphical user interface operating system launched by Apple (Mac OS X TM ), a multi-user, multi-process computer operating system (Unix TM ), a free and open source Unix-like operating system (Linux TM ), an open source Unix-like operating system (FreeBSD TM ) or similar.
[0126] In an exemplary embodiment, a non-volatile computer-readable storage medium is also provided, such as a memory 1932 including computer program instructions, which can be executed by the processing component 1922 of the electronic device 1900 to perform the above method.
[0127] The present disclosure may be a system, a method and / or a computer program product. The computer program product may include a computer-readable storage medium carrying computer-readable program instructions for causing a processor to implement various aspects of the present disclosure.
[0128] Computer readable storage medium can be a tangible device that can hold and store instructions used by an instruction execution device. Computer readable storage medium can be, for example, (but not limited to) an electrical storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. More specific examples (non-exhaustive list) of computer readable storage medium include: a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disk read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanical encoding device, for example, a punch card or a convex structure in a groove on which instructions are stored, and any suitable combination thereof. The computer readable storage medium used here is not interpreted as a transient signal itself, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagated by a waveguide or other transmission medium (for example, a light pulse by an optical fiber cable), or an electrical signal transmitted by a wire.
[0129] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network can include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in the computer-readable storage medium in each computing / processing device.
[0130] The computer program instructions for performing the operation of the present disclosure may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state setting data, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages, such as Smalltalk, C++, etc., and conventional procedural programming languages, such as "C" language or similar programming languages. Computer-readable program instructions may be executed completely on a user's computer, partially on a user's computer, as an independent software package, partially on a user's computer, partially on a remote computer, or completely on a remote computer or server. In the case of a remote computer, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., using an Internet service provider to connect via the Internet). In some embodiments, an electronic circuit, such as a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may be customized by utilizing the state information of the computer-readable program instructions, and the electronic circuit may execute the computer-readable program instructions, thereby realizing various aspects of the present disclosure.
[0131] Various aspects of the present disclosure are described herein with reference to the flowcharts and / or block diagrams of the methods, devices (systems) and computer program products according to the embodiments of the present disclosure. It should be understood that each box in the flowchart and / or block diagram and the combination of each box in the flowchart and / or block diagram can be implemented by computer-readable program instructions.
[0132] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device, thereby producing a machine, so that when these instructions are executed by the processor of the computer or other programmable data processing device, a device that implements the functions / actions specified in one or more boxes in the flowchart and / or block diagram is generated. These computer-readable program instructions can also be stored in a computer-readable storage medium, and these instructions cause the computer, programmable data processing device, and / or other equipment to work in a specific manner, so that the computer-readable medium storing the instructions includes a manufactured product, which includes instructions for implementing various aspects of the functions / actions specified in one or more boxes in the flowchart and / or block diagram.
[0133] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device so that a series of operating steps are performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions executed on the computer, other programmable data processing apparatus, or other device to implement the functions / actions specified in one or more boxes in the flowchart and / or block diagram.
[0134] The flow chart and block diagram in the accompanying drawings show the possible architecture, function and operation of the system, method and computer program product according to multiple embodiments of the present disclosure. In this regard, each square box in the flow chart or block diagram can represent a part of a module, program segment or instruction, and a part of the module, program segment or instruction includes one or more executable instructions for realizing the specified logical function. In some alternative implementations, the function marked in the square box can also occur in a sequence different from that marked in the accompanying drawings. For example, two continuous square boxes can actually be executed substantially in parallel, and they can sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each square box in the block diagram and / or flow chart, and the combination of the square boxes in the block diagram and / or flow chart can be implemented with a dedicated hardware-based system that performs the specified function or action, or can be implemented with a combination of special hardware and computer instructions.
[0135] The computer program product may be implemented in hardware, software or a combination thereof. In one optional embodiment, the computer program product is embodied as a computer storage medium, and in another optional embodiment, the computer program product is embodied as a software product, such as a software development kit (SDK) and the like.
[0136] The above description of various embodiments tends to emphasize the differences between the various embodiments. The same or similar aspects can be referenced to each other, and for the sake of brevity, they will not be repeated herein.
[0137] Those skilled in the art will appreciate that, in the above method of specific implementation, the order in which the steps are written does not imply a strict execution order and does not constitute any limitation on the implementation process. The specific execution order of the steps should be determined by their functions and possible internal logic.
[0138] If the technical solution of this application involves personal information, the product using the technical solution of this application has clearly informed the personal information processing rules and obtained the individual's voluntary consent before processing the personal information. If the technical solution of this application involves sensitive personal information, the product using the technical solution of this application has obtained the individual's separate consent before processing the sensitive personal information, and at the same time meets the "explicit consent" requirement. For example, on personal information collection devices such as cameras, clear and prominent signs are set to inform that the personal information collection scope has been entered and personal information will be collected. If the individual voluntarily enters the collection scope, it is deemed that he or she agrees to the collection of his or her personal information; or on the device that processes personal information, the personal information processing rules are notified by obvious signs / information, and the individual's authorization is obtained through pop-up information or by asking the individual to upload his or her personal information; among them, the personal information processing rules may include information such as the personal information processor, the purpose of personal information processing, the processing method, and the type of personal information processed.
[0139] The embodiments of the present disclosure have been described above, and the above description is exemplary, not exhaustive, and is not limited to the disclosed embodiments. Many modifications and changes will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The selection of terms used herein is intended to best explain the principles of the embodiments, practical applications, or improvements to the technology in the market, or to enable other persons of ordinary skill in the art to understand the embodiments disclosed herein.
Claims
1. A model training method, characterized in that: include: A Docker image is constructed according to a first model training framework, a first software stack corresponding to a first GPU, and preset model training parameters, wherein the first model training framework is a model training framework that calls the first GPU for model training, the first model training framework is obtained after parameter conversion of the second model training framework, the second model training framework is a model training framework that calls the second GPU for model training, and the first GPU and the second GPU are GPUs with different types of architecture configurations; Sending the Docker image to multiple training nodes, and controlling each training node to create a Docker container based on the Docker image, wherein the first GPU is deployed on each training node; For any training node, control the training node to call the first GPU deployed on the training node in the Docker container to perform model pre-training.
2. The method according to claim 1, characterized in that: The method further comprises: Performing parameter conversion on the first source code corresponding to the second model training framework to obtain the second source code corresponding to the first model training framework; Call the compiler corresponding to the first GPU, perform a code compilation operation on the second source code, and obtain a target executable file corresponding to the first model training framework.
3. The method according to claim 2, characterized in that The first model training framework includes: a first type of application programming interface API, a first type of kernel function, a first type of header file, and a first type of communication library adapted to the first software stack; The performing parameter conversion on the first source code corresponding to the second model training framework to obtain the second source code corresponding to the first model training framework includes: In the first source code, performing an interface conversion operation on a second type API to obtain the first type API, wherein the second type API is an API adapted to a second software stack corresponding to the second GPU; In the first source code, a replacement operation is performed on a second type kernel function to obtain the first type kernel function, wherein the second type kernel function is a kernel function adapted to the second software stack; In the first source code, a replacement operation is performed on a second type header file to obtain the first type header file, wherein the second type header file is a header file adapted to the second software stack; In the first source code, a replacement operation is performed on a second type of communication library to obtain the first type of communication library, wherein the second type of communication library is a communication library adapted to the second software stack.
4. The method according to claim 3, characterized in that The method further comprises: In the first source code, a first type of operator is screened, and a comment tag is set for the first type of operator, wherein the first type of operator is an operator incompatible with the first software stack, and the comment tag is used to indicate that the first type of operator is not to be run.
5. The method according to claim 1, characterized in that The method further comprises: According to the multiple data types supported by the mixed precision acceleration model in the first model training framework, data type adaptation processing is performed on the first software stack to obtain an updated first software stack, wherein the updated first software stack supports the multiple data types.
6. A model training device, characterized in that: include: A Docker image building module, used to build a Docker image according to a first model training framework, a first software stack corresponding to a first GPU, and preset model training parameters, wherein the first model training framework is a model training framework that calls the first GPU for model training, the first model training framework is obtained after parameter conversion of the second model training framework, the second model training framework is a model training framework that calls the second GPU for model training, and the first GPU and the second GPU are GPUs with different types of architecture configurations; A Docker container creation module, used to send the Docker image to multiple training nodes, and control each training node to create a Docker container based on the Docker image, wherein the first GPU is deployed on each training node; The pre-training module is used to control any training node to call the first GPU deployed on the training node in the Docker container to perform model pre-training.
7. The device according to claim 6, characterized in that The device also includes: a training framework determination module, specifically used to: Performing parameter conversion on the first source code corresponding to the second model training framework to obtain the second source code corresponding to the first model training framework; Call the compiler corresponding to the first GPU, perform a code compilation operation on the second source code, and obtain a target executable file corresponding to the first model training framework.
8. The device according to claim 7, characterized in that The first model training framework includes: a first type of application programming interface API, a first type of kernel function, a first type of header file, and a first type of communication library adapted to the first software stack; The training framework determination module is specifically used for: In the first source code, performing an interface conversion operation on a second type API to obtain the first type API, wherein the second type API is an API adapted to a second software stack corresponding to the second GPU; In the first source code, a replacement operation is performed on a second type kernel function to obtain the first type kernel function, wherein the second type kernel function is a kernel function adapted to the second software stack; In the first source code, a replacement operation is performed on a second type header file to obtain the first type header file, wherein the second type header file is a header file adapted to the second software stack; In the first source code, a replacement operation is performed on a second type of communication library to obtain the first type of communication library, wherein the second type of communication library is a communication library adapted to the second software stack.
9. The device according to claim 8, characterized in that The training framework determination module is specifically used for: In the first source code, a first type of operator is screened, and a comment tag is set for the first type of operator, wherein the first type of operator is an operator incompatible with the first software stack, and the comment tag is used to indicate that the first type of operator is not to be run.
10. The device according to claim 6, characterized in that The training framework determination module is specifically used for: According to the multiple data types supported by the mixed precision acceleration model in the first model training framework, data type adaptation processing is performed on the first software stack to obtain an updated first software stack, wherein the updated first software stack supports the multiple data types.
11. An electronic device, characterized in that: include: processor; a memory for storing processor-executable instructions; The processor is configured to call the instructions stored in the memory to execute the method described in any one of claims 1 to 5.
12. A computer-readable storage medium having computer program instructions stored thereon, characterized in that: When the computer program instructions are executed by a processor, the method according to any one of claims 1 to 5 is implemented.
Citation Information
Patent Citations
A method and device for automatically deploying a model training environment
CN109408062A
Method and system for training task scheduling based on Docker mirror image construction model
CN115543557A
Intelligent identification model adaptation method applied to domestic GPU environment
CN117093376A
Ngraph-based GPU backend distributed training method and system
WO2022105295A1
Pre-trained model publishing method and apparatus, electronic device, storage medium, and computer program product
WO2023097952A1