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

Error: Could not locate file (500 error) #944

Open
2 of 5 tasks
iamhenry opened this issue Sep 25, 2024 · 10 comments
Open
2 of 5 tasks

Error: Could not locate file (500 error) #944

iamhenry opened this issue Sep 25, 2024 · 10 comments
Labels
bug Something isn't working

Comments

@iamhenry
Copy link

System Info

node: 22.7
nextjs: 14

Environment/Platform

  • Website/web-app
  • Browser extension
  • Server-side (e.g., Node.js, Deno, Bun)
  • Desktop app (e.g., Electron)
  • Other (e.g., VSCode extension)

Description

I'm trying to load https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct and i get the error Error: Could not locate file: "https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct/resolve/main/onnx/decoder_model_merged_quantized.onnx".

seems like someone else is running into the same issue https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct/discussions/1

how do i fix this? i tried copying the download link directly but somehow it appends .json to the URL like so: https://huggingface.co/https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct/resolve/main/onnx/model_quantized.onnx/resolve/main/config.json\

how do i fix this to point to the correct model?

I'd love to use the new qwen2.5 0.5B and the 1.5B

thank you in advanced


code:

import { pipeline, env, Pipeline } from '@xenova/transformers';

// Set the Xenova model directory
env.localModelPath = '/tmp/models';

let generator: Pipeline | null = null;

export async function POST(req: Request) {
  let text;
  try {
    ({ text } = await req.json());
    console.log('Received text:', text);
  } catch (error) {
    console.error('Error parsing request body:', error);
    return NextResponse.json({ error: 'Invalid request body' }, { status: 400 });
  }

  try {
    if (!generator) {
      console.log('Initializing model...');
      generator = await pipeline('text-generation', 'https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct/resolve/main/onnx/model_quantized.onnx');
      console.log('Model initialized successfully');
    }

    console.log('Generating text...');
    const messages = [
      { role: 'system', content: 'You are a CBT and ACT AI therapist. Provide advice or another way to frame the situation from a therapist perspective. Ensure it\'s only 1 sentence! Omit unnecessary words that aren\'t related to the feedback or advice.' },
      { role: 'user', content: text }
    ];

    // Apply chat template
    const prompt = generator.tokenizer.apply_chat_template(messages, {
      tokenize: false,
      add_generation_prompt: true,
    });

    console.log('Constructed prompt:', prompt);

    console.log('Calling generator...');
    const output = await generator(prompt, {
      max_new_tokens: 128,
      do_sample: true,
      temperature: 0.7,
      return_full_text: false,
    });

    console.log('Raw result:', JSON.stringify(output, null, 2));

    if (!output || !Array.isArray(output) || output.length === 0 || !output[0].generated_text) {
      throw new Error(`Invalid response from model: ${JSON.stringify(output)}`);
    }

    const generatedText = output[0].generated_text.trim();
    console.log('Generated text:', generatedText);
    return NextResponse.json({ result: generatedText });
  } catch (error) {
    console.error('Error in POST request:', error);
    console.error('Error stack:', error instanceof Error ? error.stack : 'No stack available');
    console.error('Error details:', JSON.stringify(error, Object.getOwnPropertyNames(error)));
    return NextResponse.json({ error: `Server error: ${error instanceof Error ? error.message : String(error)}` }, { status: 500 });
  }
}```

### Reproduction

1. I use this url to add it to Cursor IDE (https://huggingface.co/onnx-community/Qwen2.5-0.5B-Instruct)
2. It updates the code for me
3. get 500 error 

it works when i do qwen1.5 but not the latest 2.5
@iamhenry iamhenry added the bug Something isn't working label Sep 25, 2024
@iamhenry iamhenry changed the title Error: Could not locate file (500 error) for Qwen 2.5 Error: Could not locate file (500 error) Sep 25, 2024
@iamhenry
Copy link
Author

im getting the same error for the new llama 3.1 1B

how do i resolve this issue and prevent it for the future models?

Error: Could not locate file: "https://huggingface.co/onnx-community/Llama-3.2-1B/resolve/main/onnx/decoder_model_merged_quantized.onnx"

@iamhenry
Copy link
Author

i downloaded the model manually and placed in the the onnx directory

now i get this error after renaming the model to decoder_model_merged_quantized.onnx: Something went wrong during model construction (most likely a missing operation)

@nicolasembleton
Copy link

You need to specify the file name (and sometimes it's missing the folder as the onnx model files are not always in the onnx folder).

In the case of Qwen2.5, you need to specify the model: "model_quantized" (or whichever exact model version you want to use, check in files tab in HuggingFace and then open the onnx folder, pick the model you want to use and use the name, without the extension).

But then that particular model doesn't work indeed. It's failing at .loadModel() when creating an inference session can't create session.

@iamhenry
Copy link
Author

@nicolasembleton thx.

So does that mean qwen 2.5 or llama 3.2 isn't supported yet by transformers.js?

@flatsiedatsie
Copy link
Contributor

flatsiedatsie commented Sep 27, 2024

Llama 3.2 1B seems to be supported, as there seems to be a demo available. The source code is missing though.

A good starting point might be the example code for Phi 3.5:
https://github.com/huggingface/transformers.js-examples/blob/main/phi-3.5-webgpu/src/worker.js

For one thing, you don't need to provide the specific .onnx file. Transformers.js will grab the correct one based on the settings you provide when you create the pipeline / model.

More examples:
https://github.com/xenova/transformers.js/tree/v3/examples
https://github.com/huggingface/transformers.js-examples/tree/main

@iamhenry
Copy link
Author

thank you and great find.

do you know if llama 3.2 1B will work with nextjs? I'm new to dev so i'm thinking it could be a pipeline not being compatible yet?

perhaps the @transformers pipeline isnt supported yet but @huggingface is?

@flatsiedatsie
Copy link
Contributor

perhaps the @transformers pipeline isnt supported yet but https://github.com/huggingface is?

Do you mean version 2 and version 3 of Transformers.js? if so, you need to use Transformers.js V3.

@iamhenry
Copy link
Author

@flatsiedatsie how do i do that? is there a step by step guide?

also are all the features from v2 still functional?

i would hate to install it and cause breaking changes.

thanks in advanced!

@flatsiedatsie
Copy link
Contributor

V3 is much MUCH faster because it adds support for WebGPU.

Read through the documentation: https://huggingface.co/docs/transformers.js/index

And there are tons of examples (linked above). Always search in these issues too, there is loads of knowledge in them.

@iamhenry
Copy link
Author

Appreciate your response, thx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants