RBLN SDK는 tensorflow, torch, transformers, diffusers와 같은 다양한 딥러닝 프레임워크로 구축된 모델들을 RBLN NPU에서 실행시킬 수 있습니다. 이 튜토리얼에서는 PyTorch 모델(Non-HuggingFace 모델, 옵션 1)과 HuggingFace의 diffusers 모델(옵션 2)이 각각 어떻게 RBLN NPU에서 동작될 수 있는지를 보여줍니다.
모델 컴파일에 사용해야하는 RBLN SDK는 모델이 transformers 및 diffusers와 같은 HuggingFace API와 호환되는지에 따라 달라집니다. Non-HuggingFace 모델은 rebel-compiler를 사용하여 컴파일해야 하며, HuggingFace 모델은 optimum-rbln을 사용하여 컴파일해야 합니다. 모델이 HuggingFace API와 호환되지 않는 경우 옵션 1을 참고하고, 호환되는 경우 옵션 2를 참고하십시오.
HuggingFace 모델은 optimum-rbln을 사용하여 컴파일할 수 있습니다. 다음 예제는 diffusers의 StableDiffusionXLPipeline() 클래스의 optimum-rbln 버전인 RBLNStableDiffusionXLPipeline()을 사용하여 StableDiffusionXL 모델을 컴파일하는 방법을 보여줍니다. 모델을 컴파일하려면 export 인자를 True로 설정해야 함을 참고하십시오.
importrebelimporttorchx=torch.rand(1,3,224,224)module=rebel.Runtime("simple_conv_bn_relu.rbln")inputs=x.numpy()result=module.run(inputs)print("--- Input ---")print(inputs)print("--- Result ---")print(result)
HuggingFace 모델은 optimum-rbln을 사용하여 추론을 수행합니다. 다음 예제는 diffusers의 StableDiffusionXLPipeline() 클래스의 optimum-rbln 버전인 RBLNStableDiffusionXLPipeline()을 사용하여 StableDiffusionXL 모델에서 추론을 수행하는 방법을 보여줍니다. 3장의 옵션 2에서 모델을 컴파일할 때와 동일하게 RBLNStableDiffusionXLPipeline() 클래스를 사용하지만 추론을 진행하기 위해 model_id에 컴파일된 모델이 저장된 로컬 경로를 입력하고 export 인자를 False로 설정합니다.
importosfromoptimum.rblnimportRBLNStableDiffusionXLPipelineprompt="A cinematic shot of a baby racoon wearing an intricate italian priest robe."pipe=RBLNStableDiffusionXLPipeline.from_pretrained(model_id="rbln-sdxl-turbo",export=False,)image=pipe(prompt,num_inference_steps=1,guidance_scale=0.0).images[0]image.save("generated_img.png")