<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.4.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.alatus</groupId> <artifactId>DJL</artifactId> <version>0.0.1-SNAPSHOT</version> <name>DJL</name> <description>DJL</description> <url/> <licenses> <license/> </licenses> <developers> <developer/> </developers> <scm> <connection/> <developerConnection/> <tag/> <url/> </scm> <properties> <java.version>17</java.version> <djl.version>0.26.0</djl.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>ai.djl</groupId> <artifactId>bom</artifactId> <version>${djl.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- web依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- djl框架api--> <dependency> <groupId>ai.djl</groupId> <artifactId>api</artifactId> </dependency> <!-- djl基本数据集--> <dependency> <groupId>ai.djl</groupId> <artifactId>basicdataset</artifactId> </dependency> <!-- djl模型,模型动物园--> <dependency> <groupId>ai.djl</groupId> <artifactId>model-zoo</artifactId> </dependency> <!-- djl的opencv--> <dependency> <groupId>ai.djl.opencv</groupId> <artifactId>opencv</artifactId> </dependency> <dependency> <groupId>ai.djl.mxnet</groupId> <artifactId>mxnet-engine</artifactId> </dependency> <dependency> <groupId>ai.djl.mxnet</groupId> <artifactId>mxnet-native-auto</artifactId> <version>1.8.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.4.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.alatus</groupId> <artifactId>DJL</artifactId> <version>0.0.1-SNAPSHOT</version> <name>DJL</name> <description>DJL</description> <url/> <licenses> <license/> </licenses> <developers> <developer/> </developers> <scm> <connection/> <developerConnection/> <tag/> <url/> </scm> <properties> <java.version>17</java.version> <djl.version>0.26.0</djl.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>ai.djl</groupId> <artifactId>bom</artifactId> <version>${djl.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- web依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- djl框架api--> <dependency> <groupId>ai.djl</groupId> <artifactId>api</artifactId> </dependency> <!-- djl基本数据集--> <dependency> <groupId>ai.djl</groupId> <artifactId>basicdataset</artifactId> </dependency> <!-- djl模型,模型动物园--> <dependency> <groupId>ai.djl</groupId> <artifactId>model-zoo</artifactId> </dependency> <!-- djl的opencv--> <dependency> <groupId>ai.djl.opencv</groupId> <artifactId>opencv</artifactId> </dependency> <dependency> <groupId>ai.djl.mxnet</groupId> <artifactId>mxnet-engine</artifactId> </dependency> <dependency> <groupId>ai.djl.mxnet</groupId> <artifactId>mxnet-native-auto</artifactId> <version>1.8.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
package com.alatus.djl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DjlApplication { public static void main(String[] args) { SpringApplication.run(DjlApplication.class, args); } }
package com.alatus.djl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DjlApplication { public static void main(String[] args) { SpringApplication.run(DjlApplication.class, args); } }
package com.alatus.djl.web; import ai.djl.ndarray.NDArray; import ai.djl.ndarray.NDManager; import ai.djl.ndarray.types.Shape; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** * author: Alatus * date: 2025/2/2 * description:使用DJL训练大模型 */ @RestController public class DJL { // 机器学习最基本的,我们要把我们需要处理的数据给转为一个N维向量 // 只有转为一个向量了,才能继续向下处理 @GetMapping("/test01") public String test01() { try(NDManager manager = NDManager.newBaseManager()){ // 我们通过这个manager创建向量 // 这里的Shape就是N维数组的形状 // 我们这里创建的是一个2乘以3的矩阵(N维向量) // 这里的ones指的是内容都是1填充的 // 输出的1.代表这是一个1的float值 NDArray ones = manager.ones(new Shape(2, 3)); System.out.println(ones); // 这里,我们同样可以自己创建一个矩阵 // 通过创建对应的数组和给予我们需要的形状来创建一个矩阵 NDArray array = manager.create(new float[]{1.14F, 5.14F, 1.9F, 1.9F, 8.10F, 1.14f}, new Shape(2, 3)); System.out.println(array); // 矩阵计算 // 如矩阵转质,这里我们的矩阵二乘三的矩阵就变成了三乘二 NDArray transpose = array.transpose(); System.out.println(transpose); return "矩阵"+ones+"和"+array+"的转置为"+transpose; } } // 我们这里的这些矩阵你可以模拟为从数据集中加载的 // 数据集是用于训练机器学习模型的数据集合 // 机器学习通常使用三个数据集,训练集,验证集和测试集 // 训练集是我们用来训练的实际数据集,模型从这些数据中学习权重和参数 // 验证集用来在训练过程中评估给定模型,它帮助机器学习工程师在模型开发阶段微调超参数 // 模型不从验证数据集学习,验证数据集是可选的 // 测试数据集提供了用于评估模型性能的黄金标准,它只在模型完全训练完成后使用 // 测试数据集应该更准确的评估模型将如何在新数据上执行 // 当我们有了数据集以后 @GetMapping("/test02") public String test02() { return ""; } }
package com.alatus.djl.web;
import ai.djl.ndarray.NDArray;
import ai.djl.ndarray.NDManager;
import ai.djl.ndarray.types.Shape;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/**
* author: Alatus
* date: 2025/2/2
* description:使用DJL训练大模型
*/
@RestController
public class DJL {
// 机器学习最基本的,我们要把我们需要处理的数据给转为一个N维向量
// 只有转为一个向量了,才能继续向下处理
@GetMapping("/test01")
public String test01() {
try(NDManager manager = NDManager.newBaseManager()){
// 我们通过这个manager创建向量
// 这里的Shape就是N维数组的形状
// 我们这里创建的是一个2乘以3的矩阵(N维向量)
// 这里的ones指的是内容都是1填充的
// 输出的1.代表这是一个1的float值
NDArray ones = manager.ones(new Shape(2, 3));
System.out.println(ones);
// 这里,我们同样可以自己创建一个矩阵
// 通过创建对应的数组和给予我们需要的形状来创建一个矩阵
NDArray array = manager.create(new float[]{1.14F, 5.14F, 1.9F, 1.9F, 8.10F, 1.14f}, new Shape(2, 3));
System.out.println(array);
// 矩阵计算
// 如矩阵转质,这里我们的矩阵二乘三的矩阵就变成了三乘二
NDArray transpose = array.transpose();
System.out.println(transpose);
return "矩阵"+ones+"和"+array+"的转置为"+transpose;
}
}
// 我们这里的这些矩阵你可以模拟为从数据集中加载的
// 数据集是用于训练机器学习模型的数据集合
// 机器学习通常使用三个数据集,训练集,验证集和测试集// 训练集是我们用来训练的实际数据集,模型从这些数据中学习权重和参数
// 验证集用来在训练过程中评估给定模型,它帮助机器学习工程师在模型开发阶段微调超参数
// 模型不从验证数据集学习,验证数据集是可选的// 测试数据集提供了用于评估模型性能的黄金标准,它只在模型完全训练完成后使用
// 测试数据集应该更准确的评估模型将如何在新数据上执行// 当我们有了数据集以后
@GetMapping("/test02")
public String test02() {
return "";
}
}