Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pytorch] 2.1.2-1.5.10 release run example meet error [ Pointer address of argument 0 is NULL.] #1473

Open
mullerhai opened this issue Feb 17, 2024 · 5 comments
Assignees
Labels

Comments

@mullerhai
Copy link

Hi, feeling exciting to use javacpp [pytorch] 2.1.2-1.5.10 ,but when I running our example meet error ,I don't know why ,but the dataset real path is exist ,why the program can not read them?

Macos latest
java 1.8 && scala 2.11.11 all try

import org.bytedeco.javacpp._
import org.bytedeco.pytorch._
import org.bytedeco.pytorch.Module
import org.bytedeco.pytorch.global.torch._


object SimpleMNIST { // Define a new Module.
  class Net() extends Module { // Construct and register two Linear submodules.
    final var fc1: LinearImpl  = register_module("fc1", new LinearImpl(784, 64))
    final var fc2: LinearImpl = register_module("fc2", new LinearImpl(64, 32))
    final var fc3: LinearImpl= register_module("fc3", new LinearImpl(32, 10))

    // Implement the Net's algorithm.
    def forward(xs: Tensor): Tensor = { // Use one of many tensor manipulation functions.
      var x = xs
      x = relu(fc1.forward(x.reshape(x.size(0), 784)))
      x = dropout(x, /*p=*/ 0.5, /*train=*/ is_training)
      x = relu(fc2.forward(x))
      x = log_softmax(fc3.forward(x), /*dim=*/ 1)
      x
    }


  }

  @throws[Exception]
  def main(args: Array[String]): Unit = {
    /* try to use MKL when available */
    System.setProperty("org.bytedeco.openblas.load", "mkl")
    // Create a new Net.
    val net = new SimpleMNIST.Net
    // Create a multi-threaded data loader for the MNIST dataset.
    val path = "/Users/zhanghaining/Downloads/mnist/" //"./data"
//    val pathz = "/Users/zhanghaining/Documents/codeWorld/untitled/data/"
    val pathz = "/Users/zhanghaining/Downloads/pytorchScala/data/"
    val paths = "/Users/zhanghaining/Downloads/pytorchScala/data/"
    val mnist = new MNIST(paths)

    val data_set = mnist.map(new ExampleStack)
    val data_loader = new MNISTRandomDataLoader(data_set, new RandomSampler(data_set.size.get), new DataLoaderOptions(/*batch_size=*/ 64))
    // Instantiate an SGD optimization algorithm to update our Net's parameters.
    val optimizer = new SGD(net.parameters, new SGDOptions(/*lr=*/ 0.01))
    for (epoch <- 1 to 10) {
      var batch_index = 0
      // Iterate the data loader to yield batches from the dataset.
      var it = data_loader.begin
      while ( {
        !(it == data_loader.end)
      }) {
        val batch = it.access
        // Reset gradients.
        optimizer.zero_grad()
        // Execute the model on the input data.
        val prediction = net.forward(batch.data)
        // Compute a loss value to judge the prediction of our model.
        val loss = nll_loss(prediction, batch.target)
        // Compute gradients of the loss w.r.t. the parameters of our model.
        loss.backward()
        // Update the parameters based on the calculated gradients.
        optimizer.step
        // Output the loss and checkpoint every 100 batches.
        if ( {
          batch_index += 1; batch_index
        } % 100 == 0) {
          System.out.println("Epoch: " + epoch + " | Batch: " + batch_index + " | Loss: " + loss.item_float)
          // Serialize your model periodically as a checkpoint.
          val archive = new OutputArchive
          net.save(archive)
          archive.save_to("net.pt")
        }

        it = it.increment
      }
    }
  }
}


Exception in thread "main" java.lang.NullPointerException: Pointer address of argument 0 is NULL.
	at org.bytedeco.pytorch.MNISTBatchDataset.map(Native Method)
	at SimpleMNIST$.main(example.scala:39)
	at SimpleMNIST.main(example.scala)

@mullerhai
Copy link
Author

when I running the chunkdataset also meet this error

 /* try to use MKL when available */
    System.setProperty("org.bytedeco.openblas.load", "mkl")
    // Create a new Net.
    import org.bytedeco.pytorch.ChunkDataReader
    import org.bytedeco.pytorch.ChunkDataset
    import org.bytedeco.pytorch.ChunkDatasetOptions
    import org.bytedeco.pytorch.ChunkMapDataset
    import org.bytedeco.pytorch.ChunkRandomDataLoader
    import org.bytedeco.pytorch.ChunkSharedBatchDataset
    import org.bytedeco.pytorch.DataLoaderOptions
    import org.bytedeco.pytorch.Example
    import org.bytedeco.pytorch.ExampleIterator
    import org.bytedeco.pytorch.ExampleStack
    import org.bytedeco.pytorch.ExampleVector
    import org.bytedeco.pytorch.RandomSampler
    import org.bytedeco.pytorch.Tensor
    val batch_size = 10
    val prefetch_count = 1
    val data_reader = new ChunkDataReader() {

      override def read_chunk(chunk_index: Long) = new ExampleVector(new Example(torch.ones(1), torch.ones(1)), new Example(torch.ones(1), torch.ones(1)))

      override def chunk_count = 1

      override def reset(): Unit = {
      }
    }
    val sampler = new RandomSampler(0)
    val data_set = new ChunkSharedBatchDataset(new ChunkDataset(data_reader, sampler, sampler, new ChunkDatasetOptions(prefetch_count, batch_size))).map(new ExampleStack)
    val data_loaders: ChunkRandomDataLoaderBase = new ChunkRandomDataLoader(data_set, new DataLoaderOptions(batch_size))

    for (epoch <- 1 to 10) {
      var it = data_loaders.begin()
      while ( {
        !(it == data_loaders.end)
      }) {
        val batch = it.access

        println(s" ${batch.data.createIndexer } ${batch.target.createIndexer} " )

        it = it.increment
      }
    }

error

/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=58358:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/rt.jar:/Users/zhanghaining/Downloads/pytorchScala/target/scala-2.12/classes:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp-platform/1.5.11-SNAPSHOT/javacpp-platform-1.5.11-20240211.152631-54.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-android-arm64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-android-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-ios-arm64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-ios-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-linux-arm64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-linux-ppc64le.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-linux-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-macosx-arm64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-macosx-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/javacpp/1.5.11-SNAPSHOT/javacpp-1.5.11-20240211.152855-41-windows-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas-platform/0.3.26-1.5.11-SNAPSHOT/openblas-platform-0.3.26-1.5.11-20240130.093148-17.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-android-arm64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-android-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-ios-arm64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-ios-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-linux-arm64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-linux-ppc64le.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-linux-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-macosx-arm64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-macosx-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/openblas/0.3.26-1.5.11-SNAPSHOT/openblas-0.3.26-1.5.11-20240129.142557-11-windows-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/pytorch-platform/2.1.2-1.5.11-SNAPSHOT/pytorch-platform-2.1.2-1.5.11-20240130.011732-4.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/pytorch/2.1.2-1.5.11-SNAPSHOT/pytorch-2.1.2-1.5.11-20240130.093152-7.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/pytorch/2.1.2-1.5.11-SNAPSHOT/pytorch-2.1.2-1.5.11-20240130.093152-7-linux-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/pytorch/2.1.2-1.5.11-SNAPSHOT/pytorch-2.1.2-1.5.11-20240130.093152-7-macosx-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/oss.sonatype.org/content/repositories/snapshots/org/bytedeco/pytorch/2.1.2-1.5.11-SNAPSHOT/pytorch-2.1.2-1.5.11-20240130.093152-7-windows-x86_64.jar:/Users/zhanghaining/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.12.11/scala-library-2.12.11.jar SimpleMNIST
Exception in thread "main" java.lang.NullPointerException: Pointer address of argument 0 is NULL.
	at org.bytedeco.pytorch.ChunkBatchSharedBatchDataset.map(Native Method)
	at SimpleMNIST$.main(example.scala:57)
	at SimpleMNIST.main(example.scala)

@HGuillemet
Copy link
Collaborator

HGuillemet commented Feb 17, 2024

The ExampleStack and TensorExampleStack classes have lost their native constructors in 2.1.2-1.5.10.
They are back in PR #1466.
Can you work around that in the meantime, for your needs ?
Maybe using the new DataLoader classes ?

@mullerhai
Copy link
Author

The ExampleStack and TensorExampleStack classes have lost their native constructors in 2.1.2-1.5.10. They are back in PR #1466. Can you work around that in the meantime, for your needs ? Maybe using the new DataLoader classes ?

oh,rollback the code,then could we update 2.1.2-1.5.10 Maven public repo with our has test and correct code ?thanks

@HGuillemet
Copy link
Collaborator

Maybe can we release a 2.2.0-1.5.10 version based on PR 1466. What do you think @saudet ?

@saudet
Copy link
Member

saudet commented Feb 18, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants