1import{_ as a}from"./plugin-vue_export-helper-DlAUqK2U.js";import{o as n,c as s,e}from"./app-BSCYujwr.js";const t="/assets/image-BI99gN_n.jpg",p={},o=e(`<h1 id="clip" tabindex="-1"><a class="header-anchor" href="#clip"><span>CLIP</span></a></h1><h2 id="introduction" tabindex="-1"><a class="header-anchor" href="#introduction"><span>Introduction</span></a></h2><h2 id="prepare-pre-trained-model" tabindex="-1"><a class="header-anchor" href="#prepare-pre-trained-model"><span>prepare pre trained model</span></a></h2><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token function">curl</span> <span class="token parameter variable">-LO</span> https://huggingface.co/laion/CLIP-ViT-B-16-laion2B-s34B-b88K/resolve/main/open_clip_pytorch_model.bin 2</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h2 id="prepare-base-image" tabindex="-1"><a class="header-anchor" href="#prepare-base-image"><span>prepare base image</span></a></h2><ul><li>the dependency <code>open-clip-torch</code> is too big to install, so we need to prepare a base image with it installed</li><li>prepare <code>base.dockerfile</code><ul><li><div class="language-text line-numbers-mode" data-ext="text" data-title="text"><pre class="language-text"><code>FROM docker.io/library/python:3.12.1-bullseye 3 4RUN pip install -i https://mirrors.aliyun.com/pypi/simple/ open-clip-torch==2.24.0 5 6</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li><li>build the base image <ul><li><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token function">podman</span> build <span class="token parameter variable">-t</span> open-clip-base:latest <span class="token parameter variable">-f</span> base.dockerfile <span class="token builtin class-name">.</span> 7</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></li></ul></li></ul><h2 id="text-vectorization" tabindex="-1"><a class="header-anchor" href="#text-vectorization"><span>Text Vectorization</span></a></h2><ol><li>prepare <code>text-vectorization.py</code><ul><li><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">import</span> os 8<span class="token keyword">import</span> torch 9<span class="token keyword">import</span> open_clip 10 11model_path <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">"MODEL_PATH"</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">"/app/model/wiki.en.bin"</span><span class="token punctuation">)</span> 12model_name <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">"MODEL_NAME"</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">"ViT-B-16"</span><span class="token punctuation">)</span> 13sentence <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">"SENTENCE"</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">"hello world"</span><span class="token punctuation">)</span> 14device <span class="token operator">=</span> <span class="token string">"cuda"</span> <span class="token keyword">if</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>is_available<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">else</span> <span class="token string">"cpu"</span> 15model<span class="token punctuation">,</span> _<span class="token punctuation">,</span> preprocess <span class="token operator">=</span> open_clip<span class="token punctuation">.</span>create_model_and_transforms<span class="token punctuation">(</span> 16 model_name<span class="token operator">=</span><span class="token string">"ViT-B-16"</span><span class="token punctuation">,</span> pretrained<span class="token operator">=</span>model_path<span class="token punctuation">,</span> device<span class="token operator">=</span>device 17<span class="token punctuation">)</span> 18tokenizer <span class="token operator">=</span> open_clip<span class="token punctuation">.</span>get_tokenizer<span class="token punctuation">(</span>model_name<span class="token operator">=</span><span class="token string">"ViT-B-16"</span><span class="token punctuation">)</span> 19text <span class="token operator">=</span> tokenizer<span class="token punctuation">(</span><span class="token punctuation">[</span>sentence<span class="token punctuation">]</span><span class="token punctuation">)</span> 20<span class="token keyword">with</span> torch<span class="token punctuation">.</span>no_grad<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>amp<span class="token punctuation">.</span>
20autocast<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> 21 text_features <span class="token operator">=</span> model<span class="token punctuation">.</span>encode_text<span class="token punctuation">(</span>text<span class="token punctuation">)</span> 22 text_features <span class="token operator">/=</span> text_features<span class="token punctuation">.</span>norm<span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> keepdim<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span> 23 <span class="token keyword">print</span><span class="token punctuation">(</span>text_features<span class="token punctuation">)</span> 24 25</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li><li>run with container <ul><li><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token function">podman</span> run <span class="token parameter variable">--rm</span> <span class="token punctuation">\\</span> 26 <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/open_clip_pytorch_model.bin:/app/model/open_clip_pytorch_model.bin <span class="token punctuation">\\</span> 27 <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/text-vectorization.py:/app/text-vectorization.py <span class="token punctuation">\\</span> 28 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODEL_PATH</span><span class="token operator">=</span>/app/model/open_clip_pytorch_model.bin <span class="token punctuation">\\</span> 29 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODEL_NAME</span><span class="token operator">=</span>ViT-B-16 <span class="token punctuation">\\</span> 30 <span class="token parameter variable">-e</span> <span class="token assign-left variable">SENTENCE</span><span class="token operator">=</span><span class="token string">"On a freezing New Year's Eve, a poor young girl, shivering, bareheaded and barefoot, unsuccessfully tries to sell matches in the street."</span> <span class="token punctuation">\\</span> 31 <span class="token parameter variable">-it</span> localhost/clip-test:latest <span class="token punctuation">\\</span> 32 python3 /app/text-vectorization.py 33</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li></ol><h2 id="image-vectorization" tabindex="-1"><a class="header-anchor" href="#image-vectorization"><span>Image Vectorization</span></a></h2><ol><li>prepare <code>image-vectorization.py</code><ul><li><div class="language-python line-numbers-mode" data-ext="py" data-title="py"><pre class="language-python"><code><span class="token keyword">
33import</span> os 34<span class="token keyword">import</span> torch 35<span class="token keyword">import</span> open_clip 36 37<span class="token keyword">from</span> PIL <span class="token keyword">import</span> Image 38 39model_path <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">"MODEL_PATH"</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">"/app/model/wiki.en.bin"</span><span class="token punctuation">)</span> 40model_name <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">"MODEL_NAME"</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">"ViT-B-16"</span><span class="token punctuation">)</span> 41image_path <span class="token operator">=</span> os<span class="token punctuation">.</span>getenv<span class="token punctuation">(</span><span class="token string">"IMAGE_PATH"</span><span class="token punctuation">,</span> default<span class="token operator">=</span><span class="token string">"/app/image.jpg"</span><span class="token punctuation">)</span> 42device <span class="token operator">=</span> <span class="token string">"cuda"</span> <span class="token keyword">if</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>is_available<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">else</span> <span class="token string">"cpu"</span> 43model<span class="token punctuation">,</span> _<span class="token punctuation">,</span> preprocess <span class="token operator">=</span> open_clip<span class="token punctuation">.</span>create_model_and_transforms<span class="token punctuation">(</span> 44 model_name<span class="token operator">=</span><span class="token string">"ViT-B-16"</span><span class="token punctuation">,</span> pretrained<span class="token operator">=</span>model_path<span class="token punctuation">,</span> device<span class="token operator">=</span>device 45<span class="token punctuation">)</span> 46image <span class="token operator">=</span> preprocess<span class="token punctuation">(</span>Image<span class="token punctuation">.</span><span class="token builtin">open</span><span class="token punctuation">(</span>image_path<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>unsqueeze<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span> 47<span class="token keyword">with</span> torch<span class="token punctuation">.</span>no_grad<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> torch<span class="token punctuation">.</span>cuda<span class="token punctuation">.</span>amp<span class="token punctuation">.</span>autocast<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> 48 image_features <span class="token operator">=</span> model<span class="token punctuation">.</span>encode_image<span class="token punctuation">(</span>image<span class="token punctuation">)</span> 49 image_features <span class="token operator">/=</span> image_features<span class="token punctuation">.</span>norm<span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">,</span> keepdim<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span> 50 <span class="token keyword">print</span><span class="token punctuation">(</span>image_features<span class="token punctuation">)</span> 51 52</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li><li>prepare <code>image.jpg</code><ul><li><img src="`+t+`" alt="image.jpg" tabindex="0" loading="lazy"><figcaption>image.jpg</figcaption></li></ul></li><li>run with container <ul><li><div class="language-bash line-numbers-mode" data-ext="sh" data-title="sh"><pre class="language-bash"><code><span class="token function">
52podman</span> run <span class="token parameter variable">--rm</span> <span class="token punctuation">\\</span> 53 <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/open_clip_pytorch_model.bin:/app/model/open_clip_pytorch_model.bin <span class="token punctuation">\\</span> 54 <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/image-vectorization.py:/app/image-vectorization.py <span class="token punctuation">\\</span> 55 <span class="token parameter variable">-v</span> <span class="token variable"><span class="token variable">$(</span><span class="token builtin class-name">pwd</span><span class="token variable">)</span></span>/image.jpg:/app/image.jpg <span class="token punctuation">\\</span> 56 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODEL_PATH</span><span class="token operator">=</span>/app/model/open_clip_pytorch_model.bin <span class="token punctuation">\\</span> 57 <span class="token parameter variable">-e</span> <span class="token assign-left variable">MODEL_NAME</span><span class="token operator">=</span>ViT-B-16 <span class="token punctuation">\\</span> 58 <span class="token parameter variable">-e</span> <span class="token assign-left variable">IMAGE_PATH</span><span class="token operator">=</span>/app/image.jpg <span class="token punctuation">\\</span> 59 <span class="token parameter variable">-it</span> localhost/clip-test:latest <span class="token punctuation">\\</span> 60 python3 /app/image-vectorization.py 61</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li></ul></li></ol><h2 id="reference" tabindex="-1"><a class="header-anchor" href="#reference"><span>reference</span></a></h2><ul><li>https://github.com/openai/CLIP</li><li>https://github.com/mlfoundations/open_clip</li><li>https://huggingface.co/laion/CLIP-ViT-B-16-laion2B-s34B-b88K</li></ul>`,12),i=[o];function l(c,r){return n(),s("div",null,i)}const k=a(p,[["render",l],["__file","index.html.vue"]]),m=JSON.parse('{"path":"/articles/data-lake/examples/clip/","title":"CLIP","lang":"en-US","frontmatter":{"description":"CLIP Introduction prepare pre trained model prepare base image the dependency open-clip-torch is too big to install, so we need to prepare a base image with it installed prepare...","head":[["meta",{"property":"og:url","content":"https://mister-hope.github.io/articles/data-lake/examples/clip/"}],["meta",{"property":"og:site_name","content":"GeekCity"}],["meta",{"property":"og:title","content":"CLIP"}],["meta",{"property":"og:description","content":"CLIP Introduction prepare pre trained model prepare base image the dependency open-clip-torch is too big to install, so we need to prepare a base image with it installed prepare..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2025-10-09T08:52:15.000Z"}],["meta",{"property":"article:author","content":"ben.wangz"}],["meta",{"property":"article:modified_time","content":"2025-10-09T08:52:15.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"CLIP\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-10-09T08:52:15.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"ben.wangz\\",\\"url\\":\\"/intro/me.md\\"}]}"]]},"headers":[{"level":2,"title":"Introduction","slug":"introduction","link":"#introduction","children":[]},{"level":2,"title":"prepare pre trained model","slug":"prepare-pre-trained-model","link":"#prepare-pre-trained-model","children":[]},{"level":2,"title":"prepare base image","slug":"prepare-base-image","link":"#prepare-base-image","children":[]},{"level":2,"title":"Text Vectorization","slug":"text-vectorization","link":"#text-vectorization","children":[]},{"level":2,"title":"Image Vectorization","slug":"image-vectorization","link":"#image-vectorization","children":[]},{"level":2,"title":"reference","slug":"reference","link":"#reference","children":[]}
61],"git":{"createdTime":1759999935000,"updatedTime":1759999935000,"contributors":[{"name":"ben.wangz","email":"[email protected]","commits":1}]},"readingTime":{"minutes":0.66,"words":197},"filePathRelative":"articles/data-lake/examples/clip/README.md","localizedDate":"October 9, 2025","excerpt":"\\n<h2>Introduction</h2>\\n<h2>prepare pre trained model</h2>\\n<div class=\\"language-bash\\" data-ext=\\"sh\\" data-title=\\"sh\\"><pre class=\\"language-bash\\"><code><span class=\\"token function\\">curl</span> <span class=\\"token parameter variable\\">-LO</span> https://huggingface.co/laion/CLIP-ViT-B-16-laion2B-s34B-b88K/resolve/main/open_clip_pytorch_model.bin\\n</code></pre></div>","autoDesc":true}');export{k as comp,m as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.