Hi Tracy Rohlin,
The issue here is that Azure OpenAI requires image URLs to be publicly accessible for fine-tuning GPT-4o. Since your images are stored in Azure Blob Storage, they are private by default, which is causing the "inaccessible URL" error.
Here, Azure OpenAI does not support private image hosting for fine-tuning GPT-4o. The model requires that all image URLs be publicly accessible over the internet.
It does not have authentication mechanisms for private storage.
It validates URLs before training and skips images that are not accessible.
You cannot directly fine-tune GPT-4o with private images, but you can temporarily expose them using SAS tokens or an API gateway. The best solution depends on your security requirements and ease of implementation.
However, there are ways to temporarily allow access to private images securely:
Possible Workarounds for Private Image Hosting:
If you want to fine-tune with private images but not expose them permanently, you have two options:
Use Temporary SAS (Shared Access Signature) Tokens (Recommended):
Generate temporary SAS URLs (expiring after fine-tuning).
Use these URLs in your .jsonl fine-tuning file.
Once training is done, revoke the SAS token.
Keeps images private when not in use. Ensures Azure OpenAI can access them during fine-tuning.
Steps to Generate SAS URLs for Blob Storage:
Go to Azure Portal → Navigate to your Storage Account → Open Blob Storage.
Select the container where your images are stored.
Click on Shared Access Signature (SAS) under Settings.
Generate a SAS Token with "Read" permissions:
Allowed services: Blob
Allowed resource types: Object
Allowed permissions: Read
Set an expiry date (e.g., 7 days or more)
Copy the SAS Token URL and append it to your image URLs in the .jsonl file.
Example of updated image URL:
{
"image_url": "https://yourstorageaccount.blob.core.windows.net/yourcontainer/image1.jpg?<SAS_TOKEN>",
"prompt": "Describe this image."
}
Set Up a Secure API Gateway:
Host images on Azure Functions or an API.
The API dynamically authenticates and serves images.
Your .jsonl file will contain API endpoints instead of direct image URLs.
Maintains full security control over images. Requires extra development effort.
Hope this helps. Do let us know if you any further queries.
-------------
If this answers your query, do click Accept Answer
and Yes
for was this answer helpful.
Thank you.