<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Uranos8685のおもちゃ箱</title>
	<atom:link href="https://toybox.uranos8685.mydns.jp/feed/" rel="self" type="application/rss+xml" />
	<link>https://toybox.uranos8685.mydns.jp</link>
	<description>個人的な備忘録やゲームレビュー等のブログです</description>
	<lastBuildDate>Fri, 07 Aug 2026 23:25:12 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.3</generator>

<image>
	<url>https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/04/cropped-AE86-2-32x32.png</url>
	<title>Uranos8685のおもちゃ箱</title>
	<link>https://toybox.uranos8685.mydns.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<atom:link rel='hub' href='https://toybox.uranos8685.mydns.jp/?pushpress=hub'/>
<site xmlns="com-wordpress:feed-additions:1">252152419</site>	<item>
		<title>Panasonicの炊飯器のボタン修理</title>
		<link>https://toybox.uranos8685.mydns.jp/2026/08/07/panasonic%e3%81%ae%e7%82%8a%e9%a3%af%e5%99%a8%e3%81%ae%e3%83%9c%e3%82%bf%e3%83%b3%e4%bf%ae%e7%90%86/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2026/08/07/panasonic%e3%81%ae%e7%82%8a%e9%a3%af%e5%99%a8%e3%81%ae%e3%83%9c%e3%82%bf%e3%83%b3%e4%bf%ae%e7%90%86/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Fri, 07 Aug 2026 10:10:56 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=706</guid>

					<description><![CDATA[<p>はじめに 　2021年頃に買ったPanasonicのIH炊飯器（SR-FE109-K）の炊飯ボタンの反応が非常に悪くなってしまいました。 操作パネルの分解 　操作パネルの表はプラのシートが両面テープで貼られているだけなの [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/08/07/panasonic%e3%81%ae%e7%82%8a%e9%a3%af%e5%99%a8%e3%81%ae%e3%83%9c%e3%82%bf%e3%83%b3%e4%bf%ae%e7%90%86/">Panasonicの炊飯器のボタン修理</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">はじめに</h2>



<p class="wp-block-paragraph">　2021年頃に買ったPanasonicのIH炊飯器（SR-FE109-K）の炊飯ボタンの反応が非常に悪くなってしまいました。</p>



<figure class="wp-block-image size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185340-1-scaled.jpg"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185340-1-1024x768.jpg" alt="" class="wp-image-708" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185340-1-1024x768.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185340-1-300x225.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185340-1-768x576.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185340-1-1536x1152.jpg 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185340-1-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">操作パネルの分解</h2>



<p class="wp-block-paragraph">　操作パネルの表はプラのシートが両面テープで貼られているだけなので、カッターナイフなどでうまくペリッとやっちゃってください。</p>



<p class="wp-block-paragraph">　透明なプラのカバーがネジ3点で留まっているので、それを外したのが下の状態です。（写真撮り忘れたので、修理後の動作確認写真を使いました）</p>



<figure class="wp-block-image size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-scaled.jpg"><img decoding="async" width="1024" height="768" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-1024x768.jpg" alt="" class="wp-image-710" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-1024x768.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-300x225.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-768x576.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-1536x1152.jpg 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">壊れたボタンの取り外し</h2>



<p class="wp-block-paragraph">　ハンダごてを使って、壊れたボタンを基板の裏から外してください。</p>



<p class="wp-block-paragraph">　スイッチは6x6x5mmのモノが適合します。私は以下のスイッチを使いました（アフィリエイトリンクではありません！）。</p>


<a rel="noopener" href="https://www.amazon.co.jp/MKBKLLJY-%E3%83%A2%E3%83%BC%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AA%E3%83%BC-%E3%82%A2%E3%82%BD%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88-%E3%82%AD%E3%83%83%E3%83%88%E3%80%81%E3%81%AF%E3%82%93%E3%81%A0%E3%83%AF%E3%82%A4%E3%83%A4%E4%BB%98%E3%81%8D%E5%AF%BE%E5%BF%9C-%E3%83%96%E3%83%AC%E3%83%83%E3%83%89%E3%83%9C%E3%83%BC%E3%83%89/dp/B0F6SQW1G5/ref=sr_1_2_sspa?crid=37URTDPI6ISN&#038;dib=eyJ2IjoiMSJ9.KJ1JBcMBTtCmdf5Q4g2wqTTpChg84d_xdYLXuKhfx3GX3WRd4FXHNiQZrKPNVZS-gCyuMy7vWoY0unvBZS7AiIeZAUi8OLf66xIdCCdcN6kJIe-ECRUD7q26nNdGIrnH6dRIIxeHaVFCQoSzrV_pkYg4iO5SEoYfZPs6kQlVwrOcLPsQDlkMaFXneJRgGHWmOq5PBAbwc-cma0yLccqarwB9ivehphTQPj2Niwm7V376coFeHXF1Z88dO_TNeHqMCyTSV-m_cIqI3hut7hhkiYcPWBfxLQYSzretTUu1O_s.pcYCRAjC7uNvVuKs4R6g5CXQwSmJOVS0_DqWlKBS-To&#038;dib_tag=se&#038;keywords=%E3%82%BF%E3%82%AF%E3%83%88%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%2B2%E3%83%94%E3%83%B3%2B6mm&#038;qid=1786097142&#038;sprefix=%2Caps%2C252&#038;sr=8-2-spons&#038;ufe=app_do%3Aamzn1.fos.f851e75d-a860-4774-84a1-525c65264f29&#038;sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&#038;th=1" title="Amazon.co.jp: MKBKLLJY 150&#20491; 2&#12500;&#12531; &#30636;&#38291;&#12479;&#12463;&#12479;&#12452;&#12523; &#12479;&#12463;&#12488; &#12503;&#12483;&#12471;&#12517;&#12508;&#12479;&#12531;&#12473;&#12452;&#12483;&#12481; 6 x 6 x 5mm &#12511;&#12491;&#12510;&#12452;&#12463;&#12525;&#12479;&#12463;&#12488;&#12473;&#12452;&#12483;&#12481; ON/OFF &#12450;&#12477;&#12540;&#12488;&#12461;&#12483;&#12488; &#12399;&#12435;&#12384;&#12527;&#12452;&#12516;&#20184;&#12365;&#12289;&#23550;&#24540; &#12497;&#12493;&#12523; PCB &#12502;&#12524;&#12483;&#12489;&#12508;&#12540;&#12489; &#22238;&#36335;&#22522;&#26495; : &#29987;&#26989;&#12539;&#30740;&#31350;&#38283;&#30330;&#29992;&#21697;" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/6f444778494073f1b7dd86fab17f98a9.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Amazon.co.jp: MKBKLLJY 150&#20491; 2&#12500;&#12531; &#30636;&#38291;&#12479;&#12463;&#12479;&#12452;&#12523; &#12479;&#12463;&#12488; &#12503;&#12483;&#12471;&#12517;&#12508;&#12479;&#12531;&#12473;&#12452;&#12483;&#12481; 6 x 6 x 5mm &#12511;&#12491;&#12510;&#12452;&#12463;&#12525;&#12479;&#12463;&#12488;&#12473;&#12452;&#12483;&#12481; ON/OFF &#12450;&#12477;&#12540;&#12488;&#12461;&#12483;&#12488; &#12399;&#12435;&#12384;&#12527;&#12452;&#12516;&#20184;&#12365;&#12289;&#23550;&#24540; &#12497;&#12493;&#12523; PCB &#12502;&#12524;&#12483;&#12489;&#12508;&#12540;&#12489; &#22238;&#36335;&#22522;&#26495; : &#29987;&#26989;&#12539;&#30740;&#31350;&#38283;&#30330;&#29992;&#21697;</div><div class="blogcard-snippet external-blogcard-snippet">Amazon.co.jp: MKBKLLJY 150個 2ピン 瞬間タクタイル タクト プッシュボタンスイッチ 6 x 6 x 5mm ミニマイクロタクトスイッチ ON/OFF アソートキット はんだワイヤ付き、対応 パネル PCB ブレッ&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.amazon.co.jp/MKBKLLJY-%E3%83%A2%E3%83%BC%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AA%E3%83%BC-%E3%82%A2%E3%82%BD%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88-%E3%82%AD%E3%83%83%E3%83%88%E3%80%81%E3%81%AF%E3%82%93%E3%81%A0%E3%83%AF%E3%82%A4%E3%83%A4%E4%BB%98%E3%81%8D%E5%AF%BE%E5%BF%9C-%E3%83%96%E3%83%AC%E3%83%83%E3%83%89%E3%83%9C%E3%83%BC%E3%83%89/dp/B0F6SQW1G5/ref=sr_1_2_sspa?crid=37URTDPI6ISN&#038;dib=eyJ2IjoiMSJ9.KJ1JBcMBTtCmdf5Q4g2wqTTpChg84d_xdYLXuKhfx3GX3WRd4FXHNiQZrKPNVZS-gCyuMy7vWoY0unvBZS7AiIeZAUi8OLf66xIdCCdcN6kJIe-ECRUD7q26nNdGIrnH6dRIIxeHaVFCQoSzrV_pkYg4iO5SEoYfZPs6kQlVwrOcLPsQDlkMaFXneJRgGHWmOq5PBAbwc-cma0yLccqarwB9ivehphTQPj2Niwm7V376coFeHXF1Z88dO_TNeHqMCyTSV-m_cIqI3hut7hhkiYcPWBfxLQYSzretTUu1O_s.pcYCRAjC7uNvVuKs4R6g5CXQwSmJOVS0_DqWlKBS-To&#038;dib_tag=se&#038;keywords=%E3%82%BF%E3%82%AF%E3%83%88%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%2B2%E3%83%94%E3%83%B3%2B6mm&#038;qid=1786097142&#038;sprefix=%2Caps%2C252&#038;sr=8-2-spons&#038;ufe=app_do%3Aamzn1.fos.f851e75d-a860-4774-84a1-525c65264f29&#038;sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&#038;th=1" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.amazon.co.jp</div></div></div></div></a>


<p class="wp-block-paragraph">　左が純正、右がAmazonのスイッチです。四角くはなりますが、ちゃんとはまりました。</p>



<figure class="wp-block-image size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184354-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184354-1024x768.jpg" alt="" class="wp-image-711" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184354-1024x768.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184354-300x225.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184354-768x576.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184354-1536x1152.jpg 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184354-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">　付け替えた図。高さもいい感じです。まあ、多少の高さはハンダする際に浮かせたりすれば調整できなくもないです。</p>



<figure class="wp-block-image size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184606-scaled.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184606-1024x768.jpg" alt="" class="wp-image-712" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184606-1024x768.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184606-300x225.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184606-768x576.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184606-1536x1152.jpg 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_184606-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">動作確認</h2>



<p class="wp-block-paragraph">　元に戻して動作確認。無事動きました。</p>



<figure class="wp-block-image size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-scaled.jpg"><img decoding="async" width="1024" height="768" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-1024x768.jpg" alt="" class="wp-image-710" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-1024x768.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-300x225.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-768x576.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-1536x1152.jpg 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/08/IMG_20260807_185129-1-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">どこかでみた写真だ…</figcaption></figure>



<p class="wp-block-paragraph">　終わり！</p>



<p class="wp-block-paragraph"></p><p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/08/07/panasonic%e3%81%ae%e7%82%8a%e9%a3%af%e5%99%a8%e3%81%ae%e3%83%9c%e3%82%bf%e3%83%b3%e4%bf%ae%e7%90%86/">Panasonicの炊飯器のボタン修理</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2026/08/07/panasonic%e3%81%ae%e7%82%8a%e9%a3%af%e5%99%a8%e3%81%ae%e3%83%9c%e3%82%bf%e3%83%b3%e4%bf%ae%e7%90%86/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">706</post-id>	</item>
		<item>
		<title>WordPressで重めの記事が投稿できなかった場合の対処法</title>
		<link>https://toybox.uranos8685.mydns.jp/2026/07/30/wordpress%e3%81%a7%e9%87%8d%e3%82%81%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%8c%e6%8a%95%e7%a8%bf%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%8b%e3%81%a3%e3%81%9f%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2026/07/30/wordpress%e3%81%a7%e9%87%8d%e3%82%81%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%8c%e6%8a%95%e7%a8%bf%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%8b%e3%81%a3%e3%81%9f%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Wed, 29 Jul 2026 18:37:16 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=702</guid>

					<description><![CDATA[<p>　なぜかメディアファイルモリモリの記事を投稿しようとすると、投稿エラーになってしまったため、いろいろ試行錯誤した結果の解決策を備忘録として記録する。 WordPressの実行環境 サーバー：Synology NASMar [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/07/30/wordpress%e3%81%a7%e9%87%8d%e3%82%81%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%8c%e6%8a%95%e7%a8%bf%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%8b%e3%81%a3%e3%81%9f%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/">WordPressで重めの記事が投稿できなかった場合の対処法</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">　なぜかメディアファイルモリモリの記事を投稿しようとすると、投稿エラーになってしまったため、いろいろ試行錯誤した結果の解決策を備忘録として記録する。</p>



<h2 class="wp-block-heading">WordPressの実行環境</h2>



<p class="wp-block-paragraph">サーバー：Synology NAS<br>MariaDB：Synologyパッケージセンターからインスコ<br>WordPress：WebStationでサービスを立てている</p>



<h2 class="wp-block-heading">対処法</h2>



<p class="wp-block-paragraph">　結論はMariaDBのパケットサイズ制限（max_allowed_packet）に引っかかっていたために投稿エラーになっていた。<br>　設定変更はSynologyのWebUI上では出来ないため、SSH接続したターミナルでコマンドを実行していく。</p>



<h3 class="wp-block-heading">設定ファイル（.cnf）の検索</h3>



<p class="wp-block-paragraph">　SSHでSynologyNASに接続したら、以下のコマンドを叩いて既存の.cnfファイルがないか確認する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>sudo find /volume1/@appstore -iname &quot;my.cnf&quot; 2&gt;/dev/null</code></pre></div>



<p class="wp-block-paragraph">　だいたい、「/volume1/@appstore/MariaDB10/xxx/xxx/mariadbxx/etc/mysqld.conf」のようなものがデフォルトで作成されているはず。<br>　sudo catコマンドで中身を確認する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>sudo cat /volume1/@appstore/MariaDB10/xxx/xxx/mariadbxx/etc/mysqld.conf</code></pre></div>



<p class="wp-block-paragraph">　すると、mysqld.confの中身が表示される。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p class="wp-block-paragraph">DO NOT EDIT THIS FILE !!!</p>



<p class="wp-block-paragraph">You can change the port on user interface of MariaDB10.</p>



<p class="wp-block-paragraph">Please add other custom configuration to /var/packages/MariaDB10/etc/my.cnf</p>



<p class="wp-block-paragraph">#<br>[client]<br>socket = /run/mysqld/mysqld10.sock</p>



<p class="wp-block-paragraph">[mysqld]<br>bind-address = 0.0.0.0<br>socket = /run/mysqld/mysqld10.sock<br>pid-file = /run/mysqld/mysqld10.pid<br>skip-external-locking<br>key_buffer_size = 16K<br>max_allowed_packet = 1M<br>table_open_cache = 4000<br>read_buffer_size = 256K<br>read_rnd_buffer_size = 256K<br>net_buffer_length = 2K<br>thread_stack = 240K<br>innodb_data_home_dir = /var/packages/MariaDB10/target/mysql<br>innodb_data_file_path = ibdata1:10M:autoextend<br>innodb_log_group_home_dir = /var/packages/MariaDB10/target/mysql<br>innodb_buffer_pool_size = 16M<br>innodb_file_per_table = 1<br>innodb_flush_method = fsync<br>synology_password_check = FORCE_PLUS_PERMANENT</p>



<p class="wp-block-paragraph">[mysqld_safe]<br>open_files_limit=5000</p>



<p class="wp-block-paragraph">[mysqldump]<br>quick<br>max_allowed_packet = 16M</p>
</div>



<p class="wp-block-paragraph">この中のmax_allowed_packet = 16Mを拡張する必要がある。ただし、直接編集せずに/var/packages/MariaDB10/etc/my.cnfに設定値を書き込むよう注意書きがあるため、その通りに処理をする（人によってパスは違うかも）。</p>



<p class="wp-block-paragraph">　まずは、/var/packages/MariaDB10/etc/my.cnfがあるかを確認。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>sudo cat /var/packages/MariaDB10/etc/my.cnf</code></pre></div>



<p class="wp-block-paragraph">　あってもなくても、以下のコマンドでmy.cnfを開く（または新規作成）。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>sudo vi /var/packages/MariaDB10/etc/my.cnf</code></pre></div>



<h4 class="wp-block-heading">（max_allowed_packetがない場合）</h4>



<p class="wp-block-paragraph">　iキーを押して編集モードにする。画面下に「<span class="marker">&#8212; INSERT &#8212;</span>」と表示されればOK。<br>　この状態で以下の内容を入力する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>[mysqld]
max_allowed_packet = 512M</code></pre></div>



<p class="wp-block-paragraph">　Escキーで編集モードを終了する（画面下&#8211; INSERT &#8211;が消える）。</p>



<h4 class="wp-block-heading">（max_allowed_packetがすでに入力済みの場合）</h4>



<p class="wp-block-paragraph">　矢印キーで「max_allowed_packet」の行にカーソルを合わせ、ddと入力するとその行が消える。<br>　あとはiキーで編集モードにした上で「max_allowed_packet = 512M」のような形で更新したい値を入力する。</p>



<h4 class="wp-block-heading">（max_allowed_packetがある場合・ない場合共通）</h4>



<p class="wp-block-paragraph">　入力した値を保存する。保存は以下のコマンドを入力する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>:wq</code></pre></div>



<p class="wp-block-paragraph">　編集画面も保存と同時に閉じられて元のターミナルに戻るので、以下のコマンドで作成したファイルを読めるか確認する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>cat /var/packages/MariaDB10/etc/my.cnf</code></pre></div>



<p class="wp-block-paragraph">　書き込んだ値が表示されればOK。あとはMariaDBを再起動し、Wordpressに再ログインして記事を保存できるか確認するだけ。</p><p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/07/30/wordpress%e3%81%a7%e9%87%8d%e3%82%81%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%8c%e6%8a%95%e7%a8%bf%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%8b%e3%81%a3%e3%81%9f%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/">WordPressで重めの記事が投稿できなかった場合の対処法</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2026/07/30/wordpress%e3%81%a7%e9%87%8d%e3%82%81%e3%81%ae%e8%a8%98%e4%ba%8b%e3%81%8c%e6%8a%95%e7%a8%bf%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%8b%e3%81%a3%e3%81%9f%e5%a0%b4%e5%90%88%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">702</post-id>	</item>
		<item>
		<title>Safetensors形式のモデルをLiteRT-LM形式に変換してみる</title>
		<link>https://toybox.uranos8685.mydns.jp/2026/07/19/litert-lm%e7%94%a8%e3%81%absafetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2026/07/19/litert-lm%e7%94%a8%e3%81%absafetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Sun, 19 Jul 2026 03:59:40 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=625</guid>

					<description><![CDATA[<p>WSL2のセットアップ 　Windowsの機能の有効化または無効化で、「Linux用Windowsサブシステム」と「Windowsサンドボックス」を有効化し、再起動する。 　管理者権限でPowerShellを立ち上げ、以 [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/07/19/litert-lm%e7%94%a8%e3%81%absafetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b/">Safetensors形式のモデルをLiteRT-LM形式に変換してみる</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">WSL2のセットアップ</h2>



<p class="wp-block-paragraph">　Windowsの機能の有効化または無効化で、「Linux用Windowsサブシステム」と「Windowsサンドボックス」を有効化し、再起動する。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-12.png"><img loading="lazy" decoding="async" width="415" height="368" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-12.png" alt="" class="wp-image-652" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-12.png 415w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-12-300x266.png 300w" sizes="(max-width: 415px) 100vw, 415px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-13.png"><img loading="lazy" decoding="async" width="415" height="368" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-13.png" alt="" class="wp-image-653" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-13.png 415w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-13-300x266.png 300w" sizes="(max-width: 415px) 100vw, 415px" /></a></figure>
</div>
</div>



<p class="wp-block-paragraph">　管理者権限でPowerShellを立ち上げ、以下のコマンドを実行する。Ubuntuがインストールされるので再度再起動する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>wsl --install</code></pre></div>



<p class="wp-block-paragraph">　スタートメニューに「Ubuntu」が追加されているので、これをクリックするとUbuntuが立ち上がるとともにターミナルが表示される。</p>



<h2 class="wp-block-heading">WSL2の環境構築</h2>



<h3 class="wp-block-heading">必要なツールをインストール</h3>



<p class="wp-block-paragraph">　以下のコマンドを実行する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>sudo apt install git git-lfs python3-pip python3-venv</code></pre></div>



<p class="wp-block-paragraph">　python &#8211;versionと叩いてpythonが入っていることを確認する。入っていなければ以下のコマンドでインストールする。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>sudo apt install python3.12</code></pre></div>



<p class="wp-block-paragraph">　Python環境構築用にuvをインストール</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>python3 -m pip install --user -U uv
uv --version</code></pre></div>



<p class="wp-block-paragraph">　uvのバージョンが表示されなければPATHが通っていないので、設定してあげる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>echo &#39;export PATH=&quot;$HOME/.local/bin:$PATH&quot;&#39; &gt;&gt; ~/.bashrc
source ~/.bashrc</code></pre></div>



<p class="wp-block-paragraph">　作業ディレクトリを作成する。今回はユーザーフォルダ直下に「litert-conversion」という名前のディレクトリを作成。<br>　そして、作成したフォルダへ移動する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>mkdir -p ~/litert-conversion
cd ~/litert-conversion</code></pre></div>



<p class="wp-block-paragraph">　仮想環境を作成する。なお、Python3.14を使うとtorchaoでtyping.Unionエラーが出るそうなのでPython3.12を使うことを推奨（1敗）。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>python3.12 -m venv litert-lm-20260719</code></pre></div>


<a rel="noopener" href="https://github.com/pytorch/ao/issues/3619?utm_source=chatgpt.com" title="fail to import torchao.quantization.pt2e ?? Issue #3619 ?? pytorch/ao" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/3fcb23057f7a9482bb68ca22ce21a320.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">fail to import torchao.quantization.pt2e ?? Issue #3619 ?? pytorch/ao</div><div class="blogcard-snippet external-blogcard-snippet">import torch,torchao import torchao.quantization.pt2e There is following issue: Traceback (most recent call last): File &#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/pytorch/ao/issues/3619" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>


<p class="wp-block-paragraph">　仮想環境の立ち上げは以下のコマンドで行う。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>source litert-lm-20260719/bin/activate</code></pre></div>



<p class="wp-block-paragraph">　立ち上がったら、以下のコマンドを実行してlitert-torch-nightlyをインストールする。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>python -m pip install --upgrade pip
python -m pip install uv
uv tool install --python 3.12 litert-torch-nightly</code></pre></div>



<p class="wp-block-paragraph">　uv tool listと入力・実行した際に以下のようになっていればOK。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="775" height="58" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-1.jpg" alt="" class="wp-image-627" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-1.jpg 775w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-1-300x22.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-1-768x57.jpg 768w" sizes="(max-width: 775px) 100vw, 775px" /></figure>



<p class="wp-block-paragraph">　litert-torchが立ち上がるか、以下のコマンドで確認する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>litert-torch --help</code></pre></div>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-2.jpg"><img loading="lazy" decoding="async" width="565" height="419" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-2.jpg" alt="" class="wp-image-629" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-2.jpg 565w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-2-300x222.jpg 300w" sizes="(max-width: 565px) 100vw, 565px" /></a><figcaption class="wp-element-caption">こんな感じで表示されればOK。「q」と入力することで元の画面に戻れる。</figcaption></figure>



<h3 class="wp-block-heading">変換対象のモデルを配置</h3>



<p class="wp-block-paragraph">　変換するモデルが未ダウンロードであれば、huggingface-hubをpipしてダウンロードしてもよいが、今回はモデルは既にWindows側でダウンロード済みのため、それをLinux環境にコピーして使う。<br>　エクスプローラーで以下の赤枠を選択すると、Linux側のファイルを参照できる。</p>



<p class="wp-block-paragraph">　今回は、作成した作業ディレクトリと同じ階層にモデルを配置した。使うモデルはQwen2.5 Coder-7B Instruct。</p>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-3-1.jpg"><img loading="lazy" decoding="async" width="978" height="517" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-3-1.jpg" alt="" class="wp-image-670" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-3-1.jpg 978w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-3-1-300x159.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-3-1-768x406.jpg 768w" sizes="(max-width: 978px) 100vw, 978px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-4.jpg"><img loading="lazy" decoding="async" width="978" height="517" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-4.jpg" alt="" class="wp-image-633" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-4.jpg 978w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-4-300x159.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-4-768x406.jpg 768w" sizes="(max-width: 978px) 100vw, 978px" /></a><figcaption class="wp-element-caption">変換対象のモデルファイルを格納したディレクトリ</figcaption></figure>



<p class="wp-block-paragraph">　作業ディレクトリに変換したモデルを出力するためのoutputフォルダを作成する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-bash" data-lang="Bash"><code>mkdir -p ~/litert-conversion/output</code></pre></div>



<h2 class="wp-block-heading">モデルを変換</h2>



<p class="wp-block-paragraph">　&#8211;quantization_recipeで量子化の形式を選択できるとのこと。今回は「dynamic_wi4_afp32」を選択。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>litert-torch export_hf --model=&quot;$HOME/Qwen2.5-Coder-7B-Instruct&quot; --output_dir=&quot;$HOME/litert-conversion/output&quot; --externalize_embedder --quantization_recipe=dynamic_wi4_afp32</code></pre></div>



<p class="wp-block-paragraph">　実行中のログは以下のとおり。変換には7分半ほどかかった。</p>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-5.jpg"><img loading="lazy" decoding="async" width="2560" height="1392" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-5.jpg" alt="" class="wp-image-639" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-5.jpg 2560w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-5-300x163.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-5-1024x557.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-5-768x418.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-5-1536x835.jpg 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-5-2048x1114.jpg 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-6.jpg"><img loading="lazy" decoding="async" width="1280" height="1308" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-6.jpg" alt="" class="wp-image-640" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-6.jpg 1280w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-6-294x300.jpg 294w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-6-1002x1024.jpg 1002w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-6-768x785.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-7.jpg"><img loading="lazy" decoding="async" width="1280" height="1392" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-7.jpg" alt="" class="wp-image-641" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-7.jpg 1280w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-7-276x300.jpg 276w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-7-942x1024.jpg 942w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-7-768x835.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px" /></a></figure>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-8-1.jpg"><img loading="lazy" decoding="async" width="1277" height="732" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-8-1.jpg" alt="" class="wp-image-658" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-8-1.jpg 1277w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-8-1-300x172.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-8-1-1024x587.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-8-1-768x440.jpg 768w" sizes="(max-width: 1277px) 100vw, 1277px" /></a></figure>



<p class="wp-block-paragraph">　ちなみに、今回の変換に当たってメモリの割り当ては以下のようにした。RAM70GB、スワップ25GBでもメモリ不足になり、最終的にRAM70GB、スワップ50GBでようやく成功した…。</p>



<figure class="wp-block-image size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-9.png"><img loading="lazy" decoding="async" width="1024" height="631" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-9-1024x631.png" alt="" class="wp-image-643" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-9-1024x631.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-9-300x185.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-9-768x474.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-9.png 1286w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-7.png"><img loading="lazy" decoding="async" width="828" height="735" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-7.png" alt="" class="wp-image-637" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-7.png 828w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-7-300x266.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-7-768x682.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-8.png"><img loading="lazy" decoding="async" width="828" height="735" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-8.png" alt="" class="wp-image-638" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-8.png 828w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-8-300x266.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-8-768x682.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a></figure>
</div>
</div>



<p class="wp-block-paragraph">　生成されたモデルファイルは以下のとおり。元々は14GB強のモデルが4GB弱になった。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-10.jpg"><img loading="lazy" decoding="async" width="978" height="517" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-10.jpg" alt="" class="wp-image-672" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-10.jpg 978w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-10-300x159.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-10-768x406.jpg 768w" sizes="(max-width: 978px) 100vw, 978px" /></a></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-9.jpg"><img loading="lazy" decoding="async" width="978" height="517" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-9.jpg" alt="" class="wp-image-645" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-9.jpg 978w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-9-300x159.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-9-768x406.jpg 768w" sizes="(max-width: 978px) 100vw, 978px" /></a></figure>
</div>
</div>



<h2 class="wp-block-heading">変換したモデルを実行してみる（CPU推論）</h2>



<p class="wp-block-paragraph">　モデルをWindows側にコピーして、以下のコードで実行してみる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>import os
import psutil
import time
import litert_lm

process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2  # MB

model_path = r&quot;H:\LLM_Models\litert-lm\qwen2.5-coder-7b-it-dynamic_wi4_afp32\qwen2.5-coder-7b-it-dynamic_wi4_afp32.litertlm&quot;

PROMPT = (
    &quot;transformersとFAISSとstreamlitを使った、&quot;
    &quot;QAチャットボットをPythonで構築して。&quot;
)


process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2
start = time.perf_counter()

with litert_lm.Engine(
    str(model_path),
    backend=litert_lm.Backend.CPU(),
) as engine:

    with engine.create_conversation() as conversation:
        response = conversation.send_message(PROMPT)

        answer = response[&quot;content&quot;][0][&quot;text&quot;]

        mem_during = process.memory_info().rss / 1024**2

end = time.perf_counter()

mem_after = process.memory_info().rss / 1024**2

print(answer)

print(&quot;=&quot; * 60)
print(f&quot;実行前メモリ使用量       : {mem_before:.2f} MB&quot;)
print(f&quot;モデル使用中メモリ使用量 : {mem_during:.2f} MB&quot;)
print(f&quot;解放後メモリ使用量       : {mem_after:.2f} MB&quot;)
print(f&quot;モデル使用中の増加量     : {mem_during - mem_before:.2f} MB&quot;)
print(f&quot;実行時間                 : {end - start:.3f} 秒&quot;)</code></pre></div>



<p class="wp-block-paragraph">　出力結果はいい感じ。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">
<p class="wp-block-paragraph">もちろんです。以下は、transformersとFAISSとstreamlitを使用して質問応答チャットボットを構築するためのPythonコードの基本的な例です。</p>



<p class="wp-block-paragraph">まず、必要なライブラリをインストールします。<br><br>pip install transformers faiss-cpu streamlit</p>



<p class="wp-block-paragraph">次に、以下のコードを実行します。</p>



<p class="wp-block-paragraph">import streamlit as st<br>from transformers import pipeline<br>import faiss<br>import numpy as np<br><br># transformersのpipelineを使用して、質問応答モデルをロードします。<br>qa = pipeline(&#8220;question-answering&#8221;)<br><br># ここでは、事前に学習済みのモデルを使用しますが、必要に応じて独自のモデルを読み込むこともできます。<br>model_name = &#8220;bert-base-japanese&#8221;<br><br># データセットをロードします。ここでは、事前に学習済みのモデルを使用しますが、必要に応じて独自のデータセットを使用することもできます。<br># dataset = load_dataset(&#8220;squad_japanese&#8221;)<br><br># データをベクトル化します。<br># sentences = dataset[&#8220;train&#8221;][&#8220;context&#8221;] + dataset[&#8220;train&#8221;][&#8220;question&#8221;]<br># inputs = qa.tokenizer(sentences, return_tensors=&#8221;pt&#8221;, truncation=True, padding=True)<br># with torch.no_grad():<br>#     embeddings = model(**inputs).last_hidden_state<br><br># ベクトルを保存します。<br># np.save(&#8220;embeddings.npy&#8221;, embeddings)<br><br># 事前に学習済みのベクトルを読み込みます。<br>embeddings = np.load(&#8220;embeddings.npy&#8221;)<br><br># FAISSでインデックスを作成します。<br>index = faiss.IndexFlatL2(embeddings.shape[1])<br>index.add(embeddings)<br><br># Streamlitのアプリケーションを作成します。<br>st.title(&#8220;質問応答チャットボット&#8221;)<br><br># ユーザーからの入力を取得します。<br>query = st.text_input(&#8220;質問を入力してください:&#8221;)<br><br># 入力された質問をベクトル化します。<br>inputs = qa.tokenizer([query], return_tensors=&#8221;pt&#8221;, truncation=True, padding=True)<br>with torch.no_grad():<br>    query_embedding = model(**inputs).last_hidden_state<br><br># 最も近いベクトルを検索します。<br>D, I = index.search(query_embedding, 1)<br><br># 最も近いベクトルに対応する回答を取得します。<br>answer = qa(question=query, context=dataset[&#8220;train&#8221;][&#8220;context&#8221;][I[0][0]])[&#8220;answer&#8221;]<br><br># 回答を表示します。<br>st.write(answer)</p>



<p class="wp-block-paragraph">このコードは、質問応答モデルを使用してユーザーからの質問を処理し、最も近いベクトルに対応する回答を返すシンプルなチャットボットを実装しています。ただし、このコードは非常に単純なものです。実際のアプリケーションでは、データの事前処理、モデルの調整、ユーザーインターフェースの改善など、多くの要素を考慮する必要があります。</p>



<p class="wp-block-paragraph">実行前メモリ使用量 : 646.44 MB<br>モデル使用中メモリ使用量 : 4143.16 MB<br>解放後メモリ使用量 : 101.20 MB<br>モデル使用中の増加量 : 3496.73 MB<br>実行時間 : 87.121 秒</p>
</div>



<p class="wp-block-paragraph">↓生成テストの実行結果をHTML出力したもの</p>



<div class="wp-block-file"><a id="wp-block-file--media-68256f6a-6f35-449a-90c3-c3e6ab072235" href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-test.html">litert-lm-test</a><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/litert-lm-test.html" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-68256f6a-6f35-449a-90c3-c3e6ab072235">ダウンロード</a></div>



<h2 class="wp-block-heading">今回作成したモデルのHuggingFaceリポジトリ</h2>



<p class="wp-block-paragraph"><a href="https://huggingface.co/Uranos8685/qwen2.5-coder-7b-it-dynamic_wi4_afp32">Uranos8685/qwen2.5-coder-7b-it-dynamic_wi4_afp32 · Hugging Face</a></p><p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/07/19/litert-lm%e7%94%a8%e3%81%absafetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b/">Safetensors形式のモデルをLiteRT-LM形式に変換してみる</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2026/07/19/litert-lm%e7%94%a8%e3%81%absafetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">625</post-id>	</item>
		<item>
		<title>Python＋OpenVINOでSafetensors形式のモデルを実行してみる</title>
		<link>https://toybox.uranos8685.mydns.jp/2026/07/17/python%ef%bc%8bopenvino%e3%81%a7llm%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2026/07/17/python%ef%bc%8bopenvino%e3%81%a7llm%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Fri, 17 Jul 2026 13:12:28 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=596</guid>

					<description><![CDATA[<p>実行環境 　備忘録。2026年7月時点のWindows Updateは全て適用した状態のPC。　OpenVINOのSystem Requirementsでは、Intel CPUとARM Chipsetのみのサポートとなっ [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/07/17/python%ef%bc%8bopenvino%e3%81%a7llm%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/">Python＋OpenVINOでSafetensors形式のモデルを実行してみる</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">実行環境</h2>



<p class="wp-block-paragraph">　備忘録。2026年7月時点のWindows Updateは全て適用した状態のPC。<br />　OpenVINOのSystem Requirementsでは、Intel CPUとARM Chipsetのみのサポートとなっているが一応AMD CPUもイケるらしい。</p>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/実行環境.jpg"><img loading="lazy" decoding="async" width="1024" height="953" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/実行環境.jpg" alt="" class="wp-image-692" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/実行環境.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/実行環境-300x279.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/実行環境-768x715.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"><a rel="noopener" href="https://docs.openvino.ai/2026/about-openvino/release-notes-openvino/system-requirements.html" title="System Requirements &#8212; OpenVINO??&#65378;  documentation" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.openvino.ai%2F2026%2Fabout-openvino%2Frelease-notes-openvino%2Fsystem-requirements.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">System Requirements &#8212; OpenVINO??&#65378;  documentation</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.openvino.ai/2026/about-openvino/release-notes-openvino/system-requirements.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.openvino.ai</div></div></div></div></a></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-embed is-type-wp-embed is-provider-hatena-blog wp-block-embed-hatena-blog"><div class="wp-block-embed__wrapper">

<a rel="noopener" href="https://tadaoyamaoka.hatenablog.com/entry/2023/02/04/182216" title="Whisperモデルの軽量化 - TadaoYamaokaの開発日記" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/4189c9f62914ed16ad3de677931f3e44.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Whisperモデルの軽量化 - TadaoYamaokaの開発日記</div><div class="blogcard-snippet external-blogcard-snippet">ONNXにしたWhisperのモデルの推論を速くするために、以下の方法を試した。 OpenVINOで推論 FP16化 INT8量子化 Whisperのモデルはbaseを使用している。 OpenVINOで推論 OpenVINOは、intelの...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://tadaoyamaoka.hatenablog.com/entry/2023/02/04/182216" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">tadaoyamaoka.hatenablog.com</div></div></div></div></a>
</div></figure>
</div>
</div>



<h2 class="wp-block-heading">環境構築</h2>



<p class="wp-block-paragraph">　上記System Requirementsにて、Pythonは3.10-3.14が要件とのこと。<br />　AnacondaにてPython 3.14のまっさらな環境を作成した。<br /><br />　公式ドキュメントによると「OpenVINOランタイムは、動作に特定のC++ライブラリを必要とします」とのことで、以下の開発環境を推奨していた。今回はCmakeとIntelHD Graphicsドライバーのみ未インストールの環境で実行した。</p>



<ul class="wp-block-list">
<li><a href="https://visualstudio.microsoft.com/downloads/">Microsoft Visual Studio 2019以降</a></li>



<li><a href="https://cmake.org/download/">CMake</a>&nbsp;3.16以降</li>



<li><a href="https://www.python.org/downloads/">Python</a>&nbsp;3.10～3.14</li>



<li><a href="https://downloadcenter.intel.com/product/80939/Graphics-Drivers"></a>GPU 上での推論には<a href="https://downloadcenter.intel.com/product/80939/Graphics-Drivers">Intel® HD Graphics ドライバーが必要です</a></li>
</ul>



<p class="wp-block-paragraph">　Visual Studioでインストールしているコンポーネントは次のとおり。</p>



<figure class="wp-block-image size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11.png"><img loading="lazy" decoding="async" width="1024" height="576" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11-1024x576.png" alt="" class="wp-image-684" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11-1024x576.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11-300x169.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11-768x432.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11-240x135.png 240w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11-320x180.png 320w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11-640x360.png 640w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-11.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">　作成したPython環境には、下表のライブラリをpip installした。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-center" data-align="center"><strong>ライブラリ名</strong></th><th class="has-text-align-center" data-align="center"><strong>pip コマンド</strong></th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center">OpenVINO GenAI</td><td class="has-text-align-center" data-align="center">pip install openvino-genai</td></tr><tr><td class="has-text-align-center" data-align="center">Optimum Intel</td><td class="has-text-align-center" data-align="center">pip install optimum[openvino,nncf]</td></tr><tr><td class="has-text-align-center" data-align="center">Jupyter Lab</td><td class="has-text-align-center" data-align="center">pip install jupyterlab</td></tr><tr><td class="has-text-align-center" data-align="center">ipywidgets</td><td class="has-text-align-center" data-align="center">pip install ipywidgets</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">　pip installするライブラリの参考にしたドキュメントはこちら。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"><a rel="noopener" href="https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html?PACKAGE=OPENVINO_GENAI&#038;VERSION=v_2026_2_1&#038;OP_SYSTEM=WINDOWS&#038;DISTRIBUTION=PIP" title="Download the Intel Distribution of OpenVINO Toolkit" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/67fb93e1ed1890797d1934cb1ac44761.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Download the Intel Distribution of OpenVINO Toolkit</div><div class="blogcard-snippet external-blogcard-snippet">Select your operating system, distribution channel and then download your customized installation of openVINO.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.intel.com</div></div></div></div></a></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"><a rel="noopener" href="https://docs.openvino.ai/2026/openvino-workflow-generative/inference-with-optimum-intel.html" title="Inference with Optimum Intel &#8212; OpenVINO???  documentation" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.openvino.ai%2F2026%2Fopenvino-workflow-generative%2Finference-with-optimum-intel.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Inference with Optimum Intel &#8212; OpenVINO???  documentation</div><div class="blogcard-snippet external-blogcard-snippet">Learn how to use the native OpenVINO package to execute LLM models.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.openvino.ai/2026/openvino-workflow-generative/inference-with-optimum-intel.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.openvino.ai</div></div></div></div></a></div>
</div>



<p class="wp-block-paragraph">　構築後の仮想環境のライブラリは以下のとおり。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-yellow">

<p class="wp-block-paragraph">annotated-doc==0.0.4<br>anyio==4.14.2<br>argon2-cffi==25.1.0<br>argon2-cffi-bindings==25.1.0<br>arrow==1.4.0<br>asttokens==3.0.2<br>async-lru==2.3.0<br>attrs==26.1.0<br>babel==2.18.0<br>beautifulsoup4==4.15.0<br>bleach==6.4.0<br>certifi==2026.6.17<br>cffi==2.1.0<br>charset-normalizer==3.4.9<br>click==8.4.2<br>colorama==0.4.6<br>comm==0.2.3<br>debugpy==1.8.21<br>decorator==5.3.1<br>defusedxml==0.7.1<br>executing==2.2.1<br>fastjsonschema==2.21.2<br>filelock==3.30.2<br>fqdn==1.5.1<br>fsspec==2026.6.0<br>h11==0.16.0<br>hf-xet==1.5.2<br>httpcore==1.0.9<br>httpx==0.28.1<br>huggingface_hub==1.24.0<br>idna==3.18<br>ipykernel==7.3.0<br>ipython==9.15.0<br>ipython_pygments_lexers==1.1.1<br>ipywidgets==8.1.8<br>isoduration==20.11.0<br>jedi==0.20.0<br>Jinja2==3.1.6<br>joblib==1.5.3<br>json5==0.15.0<br>jsonpointer==3.1.1<br>jsonschema==4.26.0<br>jsonschema-specifications==2025.9.1<br>jupyter-events==0.12.1<br>jupyter-lsp==2.3.1<br>jupyter_builder==1.1.0<br>jupyter_client==8.9.1<br>jupyter_core==5.9.1<br>jupyter_server==2.20.0<br>jupyter_server_terminals==0.5.4<br>jupyterlab==4.6.1<br>jupyterlab_pygments==0.3.0<br>jupyterlab_server==2.28.0<br>jupyterlab_widgets==3.0.16<br>lark==1.3.1<br>markdown-it-py==4.2.0<br>MarkupSafe==3.0.3<br>matplotlib-inline==0.2.2<br>mdurl==0.1.2<br>mistune==3.3.3<br>mpmath==1.3.0<br>narwhals==2.24.0<br>nbclient==0.11.0<br>nbconvert==7.17.1<br>nbformat==5.10.4<br>nest-asyncio2==1.7.2<br>networkx==3.4.2<br>ninja==1.13.0<br>nncf==3.2.0<br>notebook_shim==0.2.4<br>numpy==2.4.6<br>openvino==2026.2.1<br>openvino-genai==2026.2.1.0<br>openvino-telemetry==2025.2.0<br>openvino-tokenizers==2026.2.1.0<br>optimum==2.2.0<br>optimum-intel==2.0.0<br>packaging==26.2<br>pandocfilters==1.5.1<br>parso==0.8.7<br>platformdirs==4.10.0<br>prometheus_client==0.25.0<br>prompt_toolkit==3.0.52<br>psutil==7.2.2<br>pure_eval==0.2.3<br>pycparser==3.0<br>pydot==3.0.4<br>Pygments==2.20.0<br>pyparsing==3.3.2<br>python-dateutil==2.9.0.post0<br>python-json-logger==4.1.0<br>pywinpty==3.0.5<br>PyYAML==6.0.3<br>pyzmq==27.1.0<br>referencing==0.37.0<br>regex==2026.7.10<br>requests==2.34.2<br>rfc3339-validator==0.1.4<br>rfc3986-validator==0.1.1<br>rfc3987-syntax==1.1.0<br>rich==15.0.0<br>rpds-py==2026.6.3<br>safetensors==0.7.0<br>scikit-learn==1.9.0<br>scipy==1.18.0<br>Send2Trash==2.1.0<br>setuptools==83.0.0<br>shellingham==1.5.4<br>six==1.17.0<br>soupsieve==2.8.4<br>stack-data==0.6.3<br>sympy==1.14.0<br>tabulate==0.10.0<br>terminado==0.18.1<br>threadpoolctl==3.6.0<br>tinycss2==1.5.1<br>tokenizers==0.22.2<br>torch==2.13.0<br>tornado==6.5.7<br>tqdm==4.68.4<br>traitlets==5.15.1<br>transformers==5.0.0<br>typer==0.27.0<br>typer-slim==0.24.0<br>typing_extensions==4.16.0<br>tzdata==2026.3<br>uri-template==1.3.0<br>urllib3==2.7.0<br>wcwidth==0.8.2<br>webcolors==25.10.0<br>webencodings==0.5.1<br>websocket-client==1.9.0<br>widgetsnbextension==4.0.15</p>

</div>



<p class="wp-block-paragraph">↓今回作った環境のRequirements.txt</p>



<div class="wp-block-file"><a id="wp-block-file--media-7e37b3fe-e4cb-4191-988e-48d6cd302d81" href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino_env_requirements.txt">openvino_env_requirements</a><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino_env_requirements.txt" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-7e37b3fe-e4cb-4191-988e-48d6cd302d81">ダウンロード</a></div>



<p class="wp-block-paragraph">　ちなみに、optinumをpip installするとこれらのライブラリが一気にインストールされた。<br />「Successfully installed annotated-doc-0.0.4 click-8.4.2 filelock-3.30.2 fsspec-2026.6.0 hf-xet-1.5.2 huggingface_hub-1.24.0 joblib-1.5.3 markdown-it-py-4.2.0 mdurl-0.1.2 mpmath-1.3.0 narwhals-2.24.0 networkx-3.4.2 ninja-1.13.0 nncf-3.2.0 optimum-2.2.0 optimum-intel-2.0.0 pydot-3.0.4 pyparsing-3.3.2 regex-2026.7.10 rich-15.0.0 safetensors-0.7.0 scikit-learn-1.9.0 scipy-1.18.0 setuptools-83.0.0 shellingham-1.5.4 sympy-1.14.0 tabulate-0.10.0 threadpoolctl-3.6.0 tokenizers-0.22.2 torch-2.13.0 tqdm-4.68.4 transformers-5.0.0 typer-0.27.0 typer-slim-0.24.0」</p>



<h2 class="wp-block-heading">Transformersモデルの実行（CPU推論）</h2>



<h3 class="wp-block-heading">8ビット量子化での推論</h3>



<p class="wp-block-paragraph">　以下のリンクを参考にモデルを実行してみる。</p>


<a rel="noopener" href="https://huggingface.co/docs/optimum-intel/openvino/inference" title="Inference · Hugging Face" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/969de81f5bb7a2e0b6268c166e0cb34c.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Inference · Hugging Face</div><div class="blogcard-snippet external-blogcard-snippet">We’re on a journey to advance and democratize artificial intelligence through open source and open science.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://huggingface.co/docs/optimum-intel/openvino/inference" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">huggingface.co</div></div></div></div></a>


<p class="wp-block-paragraph">　実行可能なモデルは以下のものらしい。</p>


<a rel="noopener" href="https://huggingface.co/docs/optimum-intel/openvino/models" title="Supported models · Hugging Face" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/b698f2522fa0d6e01f157c95ca960af8.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Supported models · Hugging Face</div><div class="blogcard-snippet external-blogcard-snippet">We’re on a journey to advance and democratize artificial intelligence through open source and open science.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://huggingface.co/docs/optimum-intel/openvino/models" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">huggingface.co</div></div></div></div></a>


<p class="wp-block-paragraph">　今回はDL済みだったQwen2.5 Coder7B itを使う。</p>


<p>https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct</p>


<p class="wp-block-paragraph">　実行したコードは以下のとおり。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>import os
import psutil
import time
from optimum.intel import OVModelForCausalLM
from transformers import AutoProcessor
process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2  # MB
start = time.time()
model_path = r&quot;H:\LLM_Models\safetensor\Qwen\Qwen2.5-Coder-7B-Instruct&quot;
processor = AutoProcessor.from_pretrained(model_path)
model = OVModelForCausalLM.from_pretrained(model_path)
messages = [
    {&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;あなたは有能なAIアシスタントです。&quot;},
    {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;面白いジョークを話して。またどこが面白いかも解説してください。&quot;},
]
inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    return_dict=True,
    return_tensors=&quot;pt&quot;,
    add_generation_prompt=True,
    enable_thinking=False
).to(model.device)
input_len = inputs[&quot;input_ids&quot;].shape[-1]
# Generate output
outputs = model.generate(**inputs, max_new_tokens=1024)
response = processor.decode(outputs[0][input_len:], skip_special_tokens=False)
mem_after = process.memory_info().rss / 1024**2  # MB
end = time.time()
print(response)
print(&quot;=&quot; * 60)
print(f&quot;実行前メモリ使用量: {mem_before:.2f} MB&quot;)
print(f&quot;実行後メモリ使用量: {mem_after:.2f} MB&quot;)
print(f&quot;実行時間: {end - start:.3f}&quot;)
# OpenVINO IR形式を保存
# 次回以降model_pathに保存済みのOpenVINO IR形式へのpathを渡せば変換が省略される。
open_vino_save_path = r&quot;H:\LLM_Models\open_vino\Qwen\Qwen2.5-Coder-7B-Instruct&quot;
model.save_pretrained(open_vino_save_path)
processor.save_pretrained(open_vino_save_path)</code></pre></div>



<p class="wp-block-paragraph">　出力された情報は以下のとおり。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">

<p class="wp-block-paragraph">No OpenVINO files were found for H:\LLM_Models\safetensor\Qwen\Qwen2.5-Coder-7B-Instruct, setting <code>export=True</code> to convert the model to the OpenVINO IR. Don&#8217;t forget to save the resulting model with <code>.save_pretrained()</code><br><code>torch_dtype</code> is deprecated! Use <code>dtype</code> instead!<br><br><code>loss_type=None</code> was set in the config but it is unrecognized. Using the default loss: <code>ForCausalLMLoss</code>.<br>c:\ProgramData\anaconda3\envs\openvino_20260717\Lib\site-packages\transformers\cache_utils.py:132: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can&#8217;t record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!<br>if not self.is_initialized or self.keys.numel() == 0:<br>c:\ProgramData\anaconda3\envs\openvino_20260717\Lib\site-packages\transformers\masking_utils.py:171: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can&#8217;t record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!<br>if (padding_length := kv_length + kv_offset &#8211; attention_mask.shape[-1]) &gt; 0:<br>c:\ProgramData\anaconda3\envs\openvino_20260717\Lib\site-packages\optimum\exporters\openvino\patching_utils.py:247: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.<br>torch.tensor(0.0, device=mask.device, dtype=dtype),<br>c:\ProgramData\anaconda3\envs\openvino_20260717\Lib\site-packages\optimum\exporters\openvino\patching_utils.py:248: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.<br>torch.tensor(torch.finfo(torch.float16).min, device=mask.device, dtype=dtype),<br>c:\ProgramData\anaconda3\envs\openvino_20260717\Lib\site-packages\transformers\integrations\sdpa_attention.py:77: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can&#8217;t record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!<br>is_causal = query.shape[2] &gt; 1 and attention_mask is None and is_causal<br>INFO:nncf:Statistics of the bitwidth distribution:<br>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br>| Weight compression mode | % all parameters (layers) | % ratio-defining parameters (layers) |<br>+===========================+=============================+========================================+<br>| int8_asym, per-channel | 100% (198 / 198) | 100% (198 / 198) |<br>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br></p>


<p class="wp-block-paragraph">もちろんです、以下にジョークを聞かせていただきます。</p>


<p class="wp-block-paragraph">「なぜパン屋さんには猫がいないのですか？」</p>


<p class="wp-block-paragraph">答え：猫はパンを作ります。</p>


<p class="wp-block-paragraph">このジョークの面白さは、「猫」と「パン」という単語の類似性を利用しています。一般的には猫とパンは関係がないように思われますが、ジョークではその関連性を利用して笑いを生み出しています。これは言葉遊びや双关語を用いて表現したものです。&lt;|im_end|&gt;</p>


<p class="wp-block-paragraph">実行前メモリ使用量: 484.25 MB<br>実行後メモリ使用量: 14306.33 MB<br>差引メモリ使用量: 13822.08 MB<br>実行時間: 83.053 秒</p>

</div>



<p class="wp-block-paragraph">　モデルファイルのサイズ比較は以下のとおり。ちなみに、変換時にはピークで20GB弱メモリを消費した。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-2.jpg"><img loading="lazy" decoding="async" width="978" height="517" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-2.jpg" alt="" class="wp-image-607" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-2.jpg 978w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-2-300x159.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-2-768x406.jpg 768w" sizes="(max-width: 978px) 100vw, 978px" /></a><figcaption class="wp-element-caption">変換前のtransformers形式</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-1-1.jpg"><img loading="lazy" decoding="async" width="978" height="517" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-1-1.jpg" alt="" class="wp-image-608" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-1-1.jpg 978w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-1-1-300x159.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-1-1-768x406.jpg 768w" sizes="(max-width: 978px) 100vw, 978px" /></a><figcaption class="wp-element-caption">OpenVINO IR形式に変換後</figcaption></figure>
</div>
</div>



<p class="wp-block-paragraph">　小さくなった理由としては、以下のリンク先の「If quantization_config is not provided, model will be exported in 8 bits by default when it has more than 1 billion parameters. You can disable it with&nbsp;<code>load_in_8bit=False</code>.」という記載から、1Billionを超えるパラメータ数のモデルは、特に指定しないと8ビット量子化されているためと思われ。</p>


<a rel="noopener" href="https://huggingface.co/docs/optimum-intel/openvino/optimization#4-bit" title="Optimization · Hugging Face" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/bb4090679d8c4d5f5a697da0a49a45a5.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Optimization · Hugging Face</div><div class="blogcard-snippet external-blogcard-snippet">We’re on a journey to advance and democratize artificial intelligence through open source and open science.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://huggingface.co/docs/optimum-intel/openvino/optimization" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">huggingface.co</div></div></div></div></a>


<p class="wp-block-paragraph">　続いて、先ほど保存したOpenVINO IR形式のQwen2.5 Coderを読み込んで実行してみる。コードは一緒で、読み込み先のモデルパスのみ異なる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2  # MB
start = time.time()
processor = AutoProcessor.from_pretrained(open_vino_save_path)
model = OVModelForCausalLM.from_pretrained(open_vino_save_path)
messages = [
    {&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;あなたは有能なAIアシスタントです。&quot;},
    {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;面白いジョークを話して。またどこが面白いかも解説してください。&quot;},
]
inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    return_dict=True,
    return_tensors=&quot;pt&quot;,
    add_generation_prompt=True,
    enable_thinking=False
).to(model.device)
input_len = inputs[&quot;input_ids&quot;].shape[-1]
outputs = model.generate(**inputs, max_new_tokens=1024)
response = processor.decode(outputs[0][input_len:], skip_special_tokens=False)
mem_after = process.memory_info().rss / 1024**2  # MB
end = time.time()
print(response)
print(&quot;=&quot; * 60)
print(f&quot;実行前メモリ使用量: {mem_before:.2f} MB&quot;)
print(f&quot;実行後メモリ使用量: {mem_after:.2f} MB&quot;)
print(f&quot;実行時間: {end - start:.3f} 秒&quot;)</code></pre></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">

<p class="wp-block-paragraph">もちろんです、以下に面白いジョークをお伝えします。</p>


<p class="wp-block-paragraph">ジョーク：「ある日、誰かが友人と話していたら、「最近、自分の人生の目標について考えているんだけど、何が一番大切なのか教えてね。」友人は答えを尋ねる。「それは何ですか？」「何でもいいんだよ。」友人は驚いて、「本当に何でもいいんだよ？」と反問した。答え者は笑って言った、「もちろんだよ。」」</p>


<p class="wp-block-paragraph">このジョークが面白い理由は以下の通りです：</p>


<ol class="wp-block-list">

<li>答え者の回答が単純で直感的で、予想外でした。</li>


<li>友人の反問は答え者の単純さを強調し、ジョークのギャグを高めました。</li>


<li>このジョークは、人生の目標や価値観についての深い思考を促進する可能性があります。</li>

</ol>


<p class="wp-block-paragraph">このジョークは、シンプルさと直感性が効果的なコミュニケーションと問題解決の方法を示すことができます。&lt;|im_end|&gt;</p>


<p class="wp-block-paragraph">実行前メモリ使用量: 696.95 MB<br>実行後メモリ使用量: 14376.63 MB<br>差引メモリ使用量: 13679.69 MB<br>実行時間: 61.783 秒</p>

</div>



<h3 class="wp-block-heading">Transformersで同じプロンプト・8ビット量子化で推論した場合</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2  # MB
start = time.time()
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    quantization_config=quantization_config,
    torch_dtype=&quot;auto&quot;,
    device_map=&quot;auto&quot;,
)
tokenizer = AutoTokenizer.from_pretrained(model_path)
quantization_time = time.time()
messages = [
    {&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;あなたは有能なAIアシスタントです。&quot;},
    {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;面白いジョークを話して。またどこが面白いかも解説してください。&quot;},
]
text = tokenizer.apply_chat_template(
    messages,
    temperature=0.1,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors=&quot;pt&quot;).to(model.device)
generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
mem_after = process.memory_info().rss / 1024**2  # MB
end = time.time()
print(response)
print(&quot;=&quot; * 60)
print(f&quot;実行前メモリ使用量: {mem_before:.2f} MB&quot;)
print(f&quot;実行後メモリ使用量: {mem_after:.2f} MB&quot;)
print(f&quot;差引メモリ使用量: {mem_after - mem_before:.2f} MB&quot;)
print(f&quot;実行時間: {end - start:.3f} 秒&quot;)
print(f&quot;量子化処理を除いた推論時間: {end - quantization_time:.3f} 秒&quot;)
del model, tokenizer</code></pre></div>



<p class="wp-block-paragraph">　　ちなみに、普通にtransformersで同じモデル・プロンプトを実行した結果は以下のとおり。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">

<p class="wp-block-paragraph">c:\ProgramData\anaconda3\envs\openvino_20260717\Lib\site-packages\bitsandbytes\autograd_functions.py:123: UserWarning: MatMul8bitLt: inputs will be cast from torch.bfloat16 to float16 during quantization<br>warnings.warn(f&#8221;MatMul8bitLt: inputs will be cast from {A.dtype} to float16 during quantization&#8221;)<br>もちろんです、以下にジョークをお聞かせします。</p>


<p class="wp-block-paragraph">「何が最も賢い動物ですか？」</p>


<p class="wp-block-paragraph">答え：「カエル」<br>（カエルの「知恵」は「知らす」という言葉から来ていると言われています）</p>


<p class="wp-block-paragraph">このジョークは、単純で分かりやすいですが、ユーモラスな要素があります。一般的な期待に反して、答えは意外と短く、直接的な答えを提供しています。これは、聴衆が予想外の答えを見つけることによって興味を引きます。さらに、「カエル」の「知恵」についての知識がある読者にとっては、ジョーク自体がより面白くなります。</p>


<p class="wp-block-paragraph">実行前メモリ使用量: 744.62 MB<br>実行後メモリ使用量: 22697.21 MB<br>差引メモリ使用量: 21952.59 MB<br>実行時間: 77.135 秒<br>量子化処理を除いた推論時間: 59.798 秒</p>

</div>



<h3 class="wp-block-heading">4ビット量子化での推論</h3>



<p class="wp-block-paragraph">　以下のコードで、任意に量子化したモデルを出力することが可能。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>import os
import psutil
import time
from optimum.intel import OVModelForCausalLM
from transformers import AutoProcessor
model_path = r&quot;H:\LLM_Models\safetensor\Qwen\Qwen2.5-Coder-7B-Instruct&quot;
# モデル量子化用に追加でロード
from nncf import compress_weights, CompressWeightsMode
process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2  # MB
start = time.time()
model = OVModelForCausalLM.from_pretrained(model_path,
                                           load_in_8bit=False, # これを指定することでデフォルトの8ビット量子化を無効化
                                           compile=False,   # この段階でモデルをコンパイルしても、その後4ビットモデルを作成⇒再コンパイルすることとなり無駄となる。
                                                            # Falseを指定することでコンパイルをキャンセルできる。
                                           )
# modeを指定することで量子化モードを指定できる。指定できるパラメータは以下のマークダウンを参照。
model.model = compress_weights(model.model,
                               mode=CompressWeightsMode.INT4_ASYM,
                              )
# プロセッサも保存する必要があるので読み込み
processor = AutoProcessor.from_pretrained(model_path)
# 量子化したモデルをOpenVINO IR形式で保存
open_vino_save_path_int4a = r&quot;H:\LLM_Models\open_vino\Qwen\Qwen2.5-Coder-7B-Instruct_INT4-ASYM&quot;
model.save_pretrained(open_vino_save_path_int4a)
processor.save_pretrained(open_vino_save_path_int4a)
end = time.time()
print(f&quot;実行時間: {end - start:.3f} 秒&quot;)
del model, processor</code></pre></div>



<p class="wp-block-paragraph">　出力された情報、モデルサイズ等は次のとおり。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">

<p class="wp-block-paragraph">No OpenVINO files were found for H:\LLM_Models\safetensor\Qwen\Qwen2.5-Coder-7B-Instruct, setting <code>export=True</code> to convert the model to the OpenVINO IR. Don&#8217;t forget to save the resulting model with <code>.save_pretrained()</code></p>


<p class="wp-block-paragraph">INFO:nncf:Statistics of the bitwidth distribution:<br>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br>| Weight compression mode | % all parameters (layers) | % ratio-defining parameters (layers) |<br>+===========================+=============================+========================================+<br>| int8_asym, per-channel | 14% (2 / 198) | 0% (0 / 196) |<br>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br>| int4_asym, group size 128 | 86% (196 / 198) | 100% (196 / 196) |<br>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+</p>


<p class="wp-block-paragraph">実行時間: 56.518 秒</p>

</div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="978" height="517" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-4.jpg" alt="" class="wp-image-685" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-4.jpg 978w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-4-300x159.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-4-768x406.jpg 768w" sizes="(max-width: 978px) 100vw, 978px" /></figure>



<p class="wp-block-paragraph">　圧縮モードについては以下のリンクを参考にした。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"><a rel="noopener" href="https://docs.openvino.ai/2026/openvino-workflow/model-optimization-guide/weight-compression.html#save-pretrained" title="LLM Weight Compression &#8212; OpenVINO???  documentation" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.openvino.ai%2F2026%2Fopenvino-workflow%2Fmodel-optimization-guide%2Fweight-compression.html%23save-pretrained?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">LLM Weight Compression &#8212; OpenVINO???  documentation</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.openvino.ai/2026/openvino-workflow/model-optimization-guide/weight-compression.html#save-pretrained" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.openvino.ai</div></div></div></div></a></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"><p>https://github.com/openvinotoolkit/nncf/blob/develop/docs/usage/post_training_compression/weights_compression/Usage.md</p></div>
</div>



<p class="wp-block-paragraph">　推論結果は以下のとおり。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2  # MB
start = time.time()
processor = AutoProcessor.from_pretrained(open_vino_save_path_int4a)
model = OVModelForCausalLM.from_pretrained(open_vino_save_path_int4a)
messages = [
    {&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;あなたは有能なAIアシスタントです。&quot;},
    {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;面白いジョークを話して。またどこが面白いかも解説してください。&quot;},
]
processor = AutoProcessor.from_pretrained(model_path)
inputs = processor.apply_chat_template(
    messages,
    temperature=0.1,
    tokenize=True,
    return_dict=True,
    return_tensors=&quot;pt&quot;,
    add_generation_prompt=True,
    enable_thinking=False,
).to(model.device)
input_len = inputs[&quot;input_ids&quot;].shape[-1]
outputs = model.generate(**inputs, max_new_tokens=1024)
response = processor.decode(outputs[0][input_len:], skip_special_tokens=False)
mem_after = process.memory_info().rss / 1024**2  # MB
end = time.time()
print(response)
print(&quot;=&quot; * 60)
print(f&quot;実行前メモリ使用量: {mem_before:.2f} MB&quot;)
print(f&quot;実行後メモリ使用量: {mem_after:.2f} MB&quot;)
print(f&quot;差引メモリ使用量: {mem_after - mem_before:.2f} MB&quot;)
print(f&quot;実行時間: {end - start:.3f} 秒&quot;)
del model, processor</code></pre></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">

<p class="wp-block-paragraph">もちろんです、以下に面白いジョークをお伝えします。</p>


<p class="wp-block-paragraph">ジョーク：<br>「何が最も強い武器ですか？答え：言葉」</p>


<p class="wp-block-paragraph">解説：</p>


<p class="wp-block-paragraph">このジョークの面白いのは、「言葉」という単語自体が強力な武器であることを意味していることです。言葉は私たちの思考や感情を表現する唯一の手段であり、それがどのように使われるかによって結果は大きく変わります。例えば、建設的な言葉は人間関係を改善し、破壊的な言葉は人間関係を損なう可能性があります。したがって、「言葉」は非常に強力な武器と言えるでしょう。&lt;|im_end|&gt;</p>


<p class="wp-block-paragraph">実行前メモリ使用量: 1116.38 MB<br>実行後メモリ使用量: 9301.42 MB<br>差引メモリ使用量: 8185.04 MB<br>実行時間: 31.623 秒</p>

</div>



<p class="wp-block-paragraph">　メモリ消費・推論時間が8ビット量子化に比べて6割程度となった。</p>



<h3 class="wp-block-heading">OpenVINOランタイム最適化を有効にする</h3>



<p class="wp-block-paragraph">　「OpenVINOランタイムは、LLM推論をより効率的に行うための最適化機能を提供します。これには、4ビット/8ビット量子化されたMatMulのアクティベーションの 動的量子化とKVキャッシュ量子化が含まれます。」とのこと。</p>


<a rel="noopener" href="https://docs.openvino.ai/2026/openvino-workflow-generative/inference-with-optimum-intel.html" title="Inference with Optimum Intel &#8212; OpenVINO???  documentation" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.openvino.ai%2F2026%2Fopenvino-workflow-generative%2Finference-with-optimum-intel.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Inference with Optimum Intel &#8212; OpenVINO???  documentation</div><div class="blogcard-snippet external-blogcard-snippet">Learn how to use the native OpenVINO package to execute LLM models.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.openvino.ai/2026/openvino-workflow-generative/inference-with-optimum-intel.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.openvino.ai</div></div></div></div></a>


<h4 class="wp-block-heading">動的量子化</h4>



<p class="wp-block-paragraph">　↓上記リンクの該当部を翻訳した。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">　<strong>動的量子化により、</strong>&nbsp;4 ビットまたは 8 ビットの量子化重みを持つ MatMul 演算のアクティベーションの量子化が可能になります (&nbsp;<a href="https://docs.openvino.ai/2026/openvino-workflow/model-optimization-guide/weight-compression.html">LLM 重み圧縮を</a>参照)。これにより、LLM の推論レイテンシとスループットが向上しますが、生成精度にわずかなずれが生じる可能性があります。量子化はグループ単位で実行され、グループサイズは設定可能です。つまり、グループ内の値は量子化パラメータを共有します。グループサイズが大きいほど推論は速くなりますが、精度は低下します。推奨されるグループサイズ値は、0、32、64、128、または&#8221;-1&#8243;&nbsp;<a href="https://docs.openvino.ai/2026/openvino-workflow-generative/inference-with-optimum-intel.html#id1">(</a>トークンごと) です。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">

<p class="wp-block-paragraph"><strong>注記</strong><br>動的量子化グループサイズは、厳密な要件ではなく、あくまで目安として扱われます。実際のポリシーは、機能要件やパフォーマンス、精度に関する考慮事項によって異なる場合があります。プラグインによっては、動的量子化を完全に無効にしたり、ユーザーが指定したサイズよりも小さいグループサイズを使用したりする場合があります。</p>

</div>



<p class="wp-block-paragraph">　Intel製CPUおよびIntel製GPUでは、動的量子化は<strong>デフォルトで</strong>有効になっています。</p>



<ul class="wp-block-list">
<li>XMXをサポートしていないIntel CPUおよびIntel GPUの場合、デフォルトのグループサイズは<code>32</code>です。</li>



<li>XMX をサポートする Intel GPU の場合、サポートされているグループ サイズは <code>innermost&nbsp;axis</code> のみで、<strong>デフォルトで</strong>有効になっています。</li>
</ul>



<p class="wp-block-paragraph">　動的量子化を無効にするには、次のいずれかの方法を実行してください。</p>



<ul class="wp-block-list">
<li><strong>（主要オプション）</strong><code>DYNAMIC_QUANTIZATION_GROUP_SIZE</code>の値を0に設定しま<code>す</code>。</li>



<li>実行モードを <code>PERFORMANCE&nbsp;mode</code> から <code>ACCURACY&nbsp;mode</code> に切り替えます。ただし、このオプションは推論精度にも影響します。<code>PERFORMANCE</code> と <code>ACCURACY</code> のモードの詳細については、<a href="https://docs.openvino.ai/2026/openvino-workflow/running-inference/optimize-inference/precision-control.html#execution-mode">「精度制御ガイド」</a>を参照してください。</li>
</ul>



<p class="wp-block-paragraph">　グループサイズの値を変更するには（例： e.g. から 64 へ）、次のコードを実行する必要があります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>model = OVModelForCausalLM.from_pretrained(
    model_path,
    ov_config={&quot;DYNAMIC_QUANTIZATION_GROUP_SIZE&quot;: &quot;64&quot;}
)</code></pre></div>
</blockquote>



<p class="wp-block-paragraph">　XMXとは、IntelのGPU（Arcなど）に搭載されているAI・行列演算用ハードウェアエンジン（Xe Matrix Extensions）とのこと。<br />　デフォルトで有効らしいが、Ryzenには搭載されていないので今回の検証は全て動的量子化は無効の状態。</p>



<h4 class="wp-block-heading">KVキャッシュの量子化</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">　<strong>KVキャッシュの量子化により</strong>、LLMのキーと値のキャッシュの精度を下げることができます。これにより、推論中のメモリ消費が削減され、レイテンシとスループットが向上します。KVキャッシュは、次の精度に量子化できます。<code>u8</code>、u4、bf16、f16。u8またはu4の場合、グループごとの量子化が使用されます。グループサイズは、<code>KEY_CACHE_GROUP_SIZE</code>および<code>VALUE_CACHE_GROUP_SIZE</code>で制御されます&nbsp;。キーと値の精度は、<code>KEY_CACHE_PRECISION</code>および<code>VALUE_CACHE_PRECISION</code>を使用して個別に構成できます。キーの量子化モードは、<code>KEY_CACHE_QUANT_MODE</code>で（より正確な）または<code>BY_CHANNELBY_TOKEN</code>のいずれかに設定されます。</p>



<p class="wp-block-paragraph">　CPUおよびGPUのデフォルトのKVキャッシュ量子化設定：</p>



<ul class="wp-block-list">
<li>U8キー：チャネル単位の量子化、グループサイズ = 32（CPU）/ 16（GPU）</li>



<li>U8 値: トークンごとの量子化、group_size = hidden_​​dim。</li>
</ul>



<p class="wp-block-paragraph">　KVキャッシュの量子化を有効にするには、以下の設定を使用してください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>model = OVModelForCausalLM.from_pretrained(
    model_path,
    ov_config={&quot;KV_CACHE_PRECISION&quot;: &quot;u8&quot;, &quot;DYNAMIC_QUANTIZATION_GROUP_SIZE&quot;: &quot;32&quot;, &quot;PERFORMANCE_HINT&quot;: &quot;LATENCY&quot;}
)</code></pre></div>
</blockquote>



<p class="wp-block-paragraph">　また、OpenVINOのリリースノートによると、デフォルトでKVキャッシュの量子化が有効らしい。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">OpenVINO リリースノート</p>



<p class="wp-block-paragraph">2024年6月 &#8211; 2024年12月18日</p>



<p class="wp-block-paragraph"><a href="https://docs.openvino.ai/2024/about-openvino/release-notes-openvino/system-requirements.html">システム要件</a>|<a href="https://docs.openvino.ai/2024/about-openvino/release-notes-openvino/release-policy.html">リリースポリシー</a>|<a href="https://docs.openvino.ai/2024/get-started/install-openvino.html">インストールガイド</a></p>



<p class="wp-block-paragraph">新着情報</p>



<ul class="wp-block-list">
<li>OpenVINO 2024.6リリースには、安定性の向上とLLMパフォーマンスの改善のためのアップデートが含まれています。</li>



<li>Intel® Arc™ Bシリーズグラフィックス（旧称Battlemage）のサポートを追加しました。</li>



<li>NPU上での推論時間とLLM性能を向上させるための最適化を実装しました。</li>



<li>GenAI APIの最適化とバグ修正により、LLMのパフォーマンスが向上しました。</li>
</ul>



<p class="wp-block-paragraph">OpenVINO™ ランタイム</p>



<p class="wp-block-paragraph">CPUデバイスプラグイン</p>



<ul class="wp-block-list">
<li><span class="marker">KVキャッシュは、デフォルトの精度として非対称8ビット符号なし整数（U8）を使用するようになりました。</span>これにより、LLMのメモリ負荷が軽減され、パフォーマンスが向上します。このオプションは、モデルのメタデータで制御できます。</li>



<li>複数のバグ修正により、一部のモデルの品質と精度が向上しました。</li>
</ul>


<a rel="noopener" href="https://docs.openvino.ai/2024/about-openvino/release-notes-openvino.html" title="OpenVINO Release Notes &#8212; OpenVINO&#8482;  documentation" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.openvino.ai%2F2024%2Fabout-openvino%2Frelease-notes-openvino.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">OpenVINO Release Notes &#8212; OpenVINO&#8482;  documentation</div><div class="blogcard-snippet external-blogcard-snippet">See what has changed in OpenVINO with the latest release, as well as all previous releases in this year&#039;s cycle.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.openvino.ai/2024/about-openvino/release-notes-openvino.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.openvino.ai</div></div></div></div></a></blockquote>



<p class="wp-block-paragraph">　これまでの検証ではKVキャッシュの精度は「u8」となっているため、試しに圧縮なしにしてみる。使ったモデルはOpenVINO IR（4ビット量子化）形式のモデル。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code># KVキャッシュの量子化を無効化してみる
process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2  # MB
start = time.time()
processor = AutoProcessor.from_pretrained(open_vino_save_path_int4a)
model = OVModelForCausalLM.from_pretrained(open_vino_save_path_int4a,
                                           ov_config={&quot;KV_CACHE_PRECISION&quot;: &quot;f16&quot;,
                                                      &quot;PERFORMANCE_HINT&quot;: &quot;LATENCY&quot;,
                                                      },
                                           )
messages = [
    {&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;あなたは有能なコーディングAIです。&quot;},
    {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;transformersとFAISSとstreamlitを使った、QAチャットボットをpythonで構築して。&quot;},
]
processor = AutoProcessor.from_pretrained(model_path)
inputs = processor.apply_chat_template(
    messages,
    temperature=0.1,
    tokenize=True,
    return_dict=True,
    return_tensors=&quot;pt&quot;,
    add_generation_prompt=True,
    enable_thinking=False,
).to(model.device)
input_len = inputs[&quot;input_ids&quot;].shape[-1]
outputs = model.generate(**inputs, max_new_tokens=4096)
response = processor.decode(outputs[0][input_len:], skip_special_tokens=False)
mem_after = process.memory_info().rss / 1024**2  # MB
end = time.time()
print(response)
print(&quot;=&quot; * 60)
print(f&quot;実行前メモリ使用量: {mem_before:.2f} MB&quot;)
print(f&quot;実行後メモリ使用量: {mem_after:.2f} MB&quot;)
print(f&quot;差引メモリ使用量: {mem_after - mem_before:.2f} MB&quot;)
print(f&quot;実行時間: {end - start:.3f} 秒&quot;)
del model, processor</code></pre></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">

<p class="wp-block-paragraph">以下に基本的なコード例を示します。</p>


<p class="wp-block-paragraph">まず、必要なライブラリをインストールしましょう：</p>


<p class="wp-block-paragraph">pip install transformers faiss-cpu streamlit</p>


<p class="wp-block-paragraph">次に、以下のようなPythonスクリプトを作成します。</p>


<p class="wp-block-paragraph">import streamlit as st<br>from transformers import pipeline<br><br># Q&amp;Aモデルのロード<br>qa_pipeline = pipeline(&#8220;question-answering&#8221;, model=&#8221;distilbert-base-uncased-distilled-squad&#8221;)<br><br>def answer_question(question, context):<br>    result = qa_pipeline(question=question, context=context)<br>    return result[&#8216;answer&#8217;]<br><br>st.title(&#8216;Q&amp;Aチャットボット&#8217;)<br><br>context = st.text_area(&#8216;文脈を入力してください&#8217;)<br>question = st.text_input(&#8216;質問を入力してください&#8217;)<br><br>if st.button(&#8216;回答&#8217;):<br>    if context and question:<br>        answer = answer_question(question, context)<br>        st.write(f&#8217;回答: {answer}&#8217;)<br>    else:<br>        st.write(&#8216;文脈または質問が未入力です。&#8217;)</p>


<p class="wp-block-paragraph">このスクリプトでは、Streamlitを使用してウェブインターフェースを作成し、ユーザーから文脈と質問を受け取ります。それらをHugging FaceのTransformersライブラリで使用したQ&amp;Aモデルに送信して、回答を得ます。</p>


<p class="wp-block-paragraph">ただし、この例では、FAISSを用いて効率的な検索を行う部分は含まれていません。FAISSを用いた検索機能を追加するためには、より複雑な設計が必要になります。</p>


<p class="wp-block-paragraph">なお、上記のコードは非常に単純化されたものです。実際のアプリケーションでは、エラーハンドリング、セキュリティ対策、パフォーマンス最適化などの考慮が必要となる可能性があります。&lt;|im_end|&gt;</p>


<p class="wp-block-paragraph">実行前メモリ使用量: 1452.83 MB<br>実行後メモリ使用量: 9407.55 MB<br>差引メモリ使用量: 7954.73 MB<br>実行時間: 72.236 秒</p>

</div>



<p class="wp-block-paragraph">　KVキャッシュの量子化をu4にもしてみる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code># KVキャッシュの量子化をu4にしてみる
process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2  # MB
start = time.time()
processor = AutoProcessor.from_pretrained(open_vino_save_path_int4a)
model = OVModelForCausalLM.from_pretrained(open_vino_save_path_int4a,
                                           ov_config={&quot;KV_CACHE_PRECISION&quot;: &quot;u4&quot;,
                                                      &quot;DYNAMIC_QUANTIZATION_GROUP_SIZE&quot;: &quot;32&quot;,
                                                      &quot;PERFORMANCE_HINT&quot;: &quot;LATENCY&quot;,
                                                      },
                                           )
messages = [
    {&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;あなたは有能なコーディングAIです。&quot;},
    {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;transformersとFAISSとstreamlitを使った、QAチャットボットをpythonで構築して。&quot;},
]
processor = AutoProcessor.from_pretrained(model_path)
inputs = processor.apply_chat_template(
    messages,
    temperature=0.1,
    tokenize=True,
    return_dict=True,
    return_tensors=&quot;pt&quot;,
    add_generation_prompt=True,
    enable_thinking=False,
).to(model.device)
input_len = inputs[&quot;input_ids&quot;].shape[-1]
outputs = model.generate(**inputs, max_new_tokens=4096)
response = processor.decode(outputs[0][input_len:], skip_special_tokens=False)
mem_after = process.memory_info().rss / 1024**2  # MB
end = time.time()
print(response)
print(&quot;=&quot; * 60)
print(f&quot;実行前メモリ使用量: {mem_before:.2f} MB&quot;)
print(f&quot;実行後メモリ使用量: {mem_after:.2f} MB&quot;)
print(f&quot;差引メモリ使用量: {mem_after - mem_before:.2f} MB&quot;)
print(f&quot;実行時間: {end - start:.3f} 秒&quot;)
del model, processor</code></pre></div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky st-blue">

<p class="wp-block-paragraph">もちろっきり、それはchatlit、具体的詳しく少しいて、すいて、そしていて、、、すえにいて。いいていててだして、。&lt;|im_end|&gt;</p>


<p class="wp-block-paragraph">実行前メモリ使用量: 1321.38 MB<br>実行後メモリ使用量: 9436.15 MB<br>差引メモリ使用量: 8114.78 MB<br>実行時間: 11.552 秒</p>

</div>



<p class="wp-block-paragraph">　u4は何度やっても生成結果が壊れてしまう。<br />　メモリ使用量をまとめるとこんな感じ。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-center" data-align="center"></th><th class="has-text-align-center" data-align="center">KVキャッシュ量子化 u8</th><th class="has-text-align-center" data-align="center">KVキャッシュ量子化 u4</th><th class="has-text-align-center" data-align="center">KVキャッシュの量子化 無効化</th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center">消費メモリ</td><td class="has-text-align-center" data-align="center">8,185MB</td><td class="has-text-align-center" data-align="center">8,114MB</td><td class="has-text-align-center" data-align="center">7,954MB</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">　大きな差はなさそう…？</p>



<h2 class="wp-block-heading">その他（GPU、NPU推論について）</h2>



<p class="wp-block-paragraph">　GPUを使った推論はIntel製GPUまたはiGPU搭載CPUでのみ実行可能とのことなので、私の環境では試せず…。</p>


<a rel="noopener" href="https://github.com/openvinotoolkit/openvino/discussions/34009" title="Why can&#039;t OpenVINO support NVIDIA GPU&#039;s? · openvinotoolkit openvino · Discussion #34009" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/a85d6237ab46a04d2085fce8df03c90e.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Why can&#8217;t OpenVINO support NVIDIA GPU&#8217;s? · openvinotoolkit openvino · Discussion #34009</div><div class="blogcard-snippet external-blogcard-snippet">Hello everyone, This is my first time contributing to an open source project and it is by far one of the nicest projects&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://github.com/openvinotoolkit/openvino/discussions/34009" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">github.com</div></div></div></div></a>


<p class="wp-block-paragraph">　NPUについても、Intel NPUを搭載したCPUを持っていないことからモデルの実行はできない。ただ、以下のドキュメントを参考にできるところまで検証した。</p>


<a rel="noopener" href="https://docs.openvino.ai/2026/openvino-workflow/running-inference/inference-devices-and-modes/npu-device.html" title="NPU Device &#8212; OpenVINO???  documentation" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.openvino.ai%2F2026%2Fopenvino-workflow%2Frunning-inference%2Finference-devices-and-modes%2Fnpu-device.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">NPU Device &#8212; OpenVINO???  documentation</div><div class="blogcard-snippet external-blogcard-snippet">OpenVINO??? supports the Neural Processing Unit, a low-power processing device dedicated to running AI inference.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.openvino.ai/2026/openvino-workflow/running-inference/inference-devices-and-modes/npu-device.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.openvino.ai</div></div></div></div></a>


<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code># NPUが認識されるかチェック
# [&#39;CPU&#39;, &#39;GPU&#39;, &#39;NPU&#39;]のようにNPUが表示されればOK
import openvino as ov
core = ov.Core()
print(&quot;利用可能なデバイス:&quot;, core.available_devices)
for device in core.available_devices:
    print(device, core.get_property(device, &quot;FULL_DEVICE_NAME&quot;))
# 必要なライブラリのインポート
import openvino
import openvino_genai
import transformers
import nncf
print(&quot;OpenVINO   :&quot;, openvino.__version__)
print(&quot;Transformers:&quot;, transformers.__version__)
print(&quot;NNCF       :&quot;, nncf.__version__)
</code></pre></div>



<p class="wp-block-paragraph">コマンドプロンプトからSafetensorsモデルをNPU向けに変換。仮想環境を立ち上げた状態で、以下のコマンドを叩けばOpenVINO IR(NPU用)にモデルを変換できる。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>optimum-cli export openvino -m &quot;H:\LLM_Models\safetensor\Qwen\Qwen2.5-Coder-7B-Instruct&quot; --task text-generation-with-past --weight-format int4 --sym --ratio 1.0 --group-size -1 &quot;H:\LLM_Models\open_vino\Qwen\Qwen2.5-Coder-7B-Instruct-int4-npu&quot;</code></pre></div>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-5.jpg"><img loading="lazy" decoding="async" width="1438" height="723" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-5.jpg" alt="" class="wp-image-690" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-5.jpg 1438w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-5-300x151.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-5-1024x515.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-5-768x386.jpg 768w" sizes="(max-width: 1438px) 100vw, 1438px" /></a><figcaption class="wp-element-caption">コマンドプロンプトの画面</figcaption></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-3.png"><img loading="lazy" decoding="async" width="828" height="735" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-3.png" alt="" class="wp-image-616" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-3.png 828w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-3-300x266.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-3-768x682.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><figcaption class="wp-element-caption">変換前メモリ使用量は25GB</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%">
<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-1.png"><img loading="lazy" decoding="async" width="828" height="735" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-1.png" alt="" class="wp-image-614" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-1.png 828w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-1-300x266.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/image-1-768x682.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><figcaption class="wp-element-caption">変換中のメモリ消費のピークは48GB程度なので、差し引き23GB程度のリソースが必要</figcaption></figure>
</div>
</div>



<figure class="wp-block-image size-full"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-3.jpg"><img loading="lazy" decoding="async" width="978" height="552" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-3.jpg" alt="" class="wp-image-617" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-3.jpg 978w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-3-300x169.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-3-768x433.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-3-240x135.jpg 240w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-3-320x180.jpg 320w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-3-640x360.jpg 640w" sizes="(max-width: 978px) 100vw, 978px" /></a><figcaption class="wp-element-caption">変換にて生成されたファイル群</figcaption></figure>



<p class="wp-block-paragraph">　以下のようなコードでNPU推論ができる…はず（実行環境がないので妄想）。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>import os
import time
import psutil
import openvino_genai as ov_genai
from transformers import AutoTokenizer
model_path = (
    r&quot;H:\LLM_Models\open_vino\Qwen&quot;
    r&quot;\Qwen2.5-Coder-7B-Instruct-int4-npu&quot;
)
process = psutil.Process(os.getpid())
mem_before = process.memory_info().rss / 1024**2
start = time.time()
tokenizer = AutoTokenizer.from_pretrained(
    model_path,
    trust_remote_code=True,
)
messages = [
    {
        &quot;role&quot;: &quot;system&quot;,
        &quot;content&quot;: &quot;あなたは有能なAIアシスタントです。&quot;,
    },
    {
        &quot;role&quot;: &quot;user&quot;,
        &quot;content&quot;: (
            &quot;Pythonで高速な素数判定関数を書いて、&quot;
            &quot;処理内容も説明してください。&quot;
        ),
    },
]
prompt = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)
pipeline_config = {
    &quot;MAX_PROMPT_LEN&quot;: 1024,
    &quot;MIN_RESPONSE_LEN&quot;: 128,
    &quot;GENERATE_HINT&quot;: &quot;BEST_PERF&quot;,
    &quot;CACHE_DIR&quot;: os.path.join(model_path, &quot;npu_cache&quot;),
}
pipe = ov_genai.LLMPipeline(
    model_path,
    &quot;NPU&quot;,
    pipeline_config,
)
result = pipe.generate(
    prompt,
    max_new_tokens=512,
    do_sample=False,
)
end = time.time()
mem_after = process.memory_info().rss / 1024**2
print(result)
print(&quot;=&quot; * 60)
print(f&quot;実行前メモリ使用量: {mem_before:.2f} MB&quot;)
print(f&quot;実行後メモリ使用量: {mem_after:.2f} MB&quot;)
print(f&quot;メモリ増加量      : {mem_after - mem_before:+.2f} MB&quot;)
print(f&quot;実行時間          : {end - start:.3f} 秒&quot;)</code></pre></div>



<h2 class="wp-block-heading">コード・実行結果をHTML出力したもの</h2>



<p class="wp-block-paragraph">　ここまでのコード・実行結果をHTMLに出力したものは以下のリンク先からどうぞ。</p>



<div class="wp-block-file"><a id="wp-block-file--media-4f6ec680-6455-4db5-abda-729d3695c30e" href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-test.html">openvino-test</a><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/07/openvino-test.html" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-4f6ec680-6455-4db5-abda-729d3695c30e">ダウンロード</a></div>



<p class="wp-block-paragraph"></p><p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/07/17/python%ef%bc%8bopenvino%e3%81%a7llm%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/">Python＋OpenVINOでSafetensors形式のモデルを実行してみる</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2026/07/17/python%ef%bc%8bopenvino%e3%81%a7llm%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">596</post-id>	</item>
		<item>
		<title>llama-cpp-python(CUDA版)のビルド環境をオフラインで構築する</title>
		<link>https://toybox.uranos8685.mydns.jp/2026/06/08/llama-cpp-pythoncuda%e7%89%88%e3%81%ae%e3%83%93%e3%83%ab%e3%83%89%e7%92%b0%e5%a2%83%e3%82%92%e3%82%aa%e3%83%95%e3%83%a9%e3%82%a4%e3%83%b3%e3%81%a7%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2026/06/08/llama-cpp-pythoncuda%e7%89%88%e3%81%ae%e3%83%93%e3%83%ab%e3%83%89%e7%92%b0%e5%a2%83%e3%82%92%e3%82%aa%e3%83%95%e3%83%a9%e3%82%a4%e3%83%b3%e3%81%a7%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 04:43:05 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=476</guid>

					<description><![CDATA[<p>1．はじめに 　Pythonのライブラリ「llama-cpp-python」をCUDA版で導入するにはGPU搭載のPCでCUDAが使用可能になっており、かつビルド環境が整っていないとCPU版がインストールされてしまいます [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/06/08/llama-cpp-pythoncuda%e7%89%88%e3%81%ae%e3%83%93%e3%83%ab%e3%83%89%e7%92%b0%e5%a2%83%e3%82%92%e3%82%aa%e3%83%95%e3%83%a9%e3%82%a4%e3%83%b3%e3%81%a7%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/">llama-cpp-python(CUDA版)のビルド環境をオフラインで構築する</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">1．はじめに</h2>



<p class="wp-block-paragraph">　Pythonのライブラリ「llama-cpp-python」をCUDA版で導入するにはGPU搭載のPCでCUDAが使用可能になっており、かつビルド環境が整っていないとCPU版がインストールされてしまいます。<br>　ビルド環境のセットアップおよびllama-cpp-pythonのインストールまでをまとめました。また、ビルド環境については個人開発であればVisual Studio Communityを使えばいいですが、法人などの場合Communityは使用できません。ただし、Build Tools for Visual Studio（C++）についてはOSSのビルドのために使用するのであればVisual Studioのライセンスなしで利用が可能です。<br>　ビルド環境のセットアップについては、法人によってはセキュリティの関係でワークステーションがネットワークにつながっていないこともありますので、各種ビルド環境の構築をオフラインPCでインストールできるように作業を進めます。</p>



<h2 class="wp-block-heading">2．インストーラーの収集（ネットワークにつながった端末で行う）</h2>



<h3 class="wp-block-heading">①Build Tools for Visual Studio</h3>



<p class="wp-block-paragraph">　オフラインでのインストーラー作成に必要となるVisual Studio ブートストラップを以下からダウンロードする。このとき選択するのは「Visual Studio 2026ビルドツール」。</p>


<a rel="noopener" href="https://learn.microsoft.com/ja-jp/visualstudio/install/create-a-network-installation-of-visual-studio?view=visualstudio" title="ネットワーク ベースのインストールを作成する - Visual Studio (Windows)" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/62becbf9e66edbd7a674a2191e28faef.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">ネットワーク ベースのインストールを作成する &#8211; Visual Studio (Windows)</div><div class="blogcard-snippet external-blogcard-snippet">プライベート ネットワーク インストール ポイントを作成して Visual Studio をデプロイし、アクセス許可が制限されたエンタープライズ ユーザーまたはインターネット アクセスが制限されたクライアント マシンをサポートします。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://learn.microsoft.com/ja-jp/visualstudio/install/create-a-network-installation-of-visual-studio?view=visualstudio" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">learn.microsoft.com</div></div></div></div></a>


<p class="wp-block-paragraph">　ダウンロード先はどこでもよいが、この後C++のオフラインインストールに必要なファイルが同じディレクトリに保存されるため、十分な空き容量があるディスクに保存すること。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="992" height="521" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-5.png" alt="" class="wp-image-483" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-5.png 992w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-5-300x158.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-5-768x403.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></figure>



<p class="wp-block-paragraph">　ダウンロードしたディレクトリの余白部分を右クリックし、「ターミナルを開く」を押下する。<br>　コマンドプロンプト（またはPowerShell）が立ち上がるので、以下のコマンドを入力し、オフラインインストールに必要な資源をダウンロードする。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>vs_BuildTools.exe --layout .\VSLayout --lang en-US ja-JP --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --add Microsoft.VisualStudio.Component.VC.CMake.Project</code></pre></div>



<p class="wp-block-paragraph">　すると、以下のようなウィンドウが表示されるので、Layout progressが100%になるまで放置する。</p>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-7387b849 wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="480" height="282" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-1.png" alt="" class="wp-image-478" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-1.png 480w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-1-300x176.png 300w" sizes="(max-width: 480px) 100vw, 480px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="577" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/VSBT_DL-1024x577.jpg" alt="" class="wp-image-484" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/VSBT_DL-1024x577.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/VSBT_DL-300x169.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/VSBT_DL-768x433.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/VSBT_DL-120x68.jpg 120w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/VSBT_DL-160x90.jpg 160w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/VSBT_DL-320x180.jpg 320w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/VSBT_DL.jpg 1115w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<p class="wp-block-paragraph">　ダウンロードが完了すると、ブートストラップと同じディレクトリにVSLayoutフォルダが作成されている。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="992" height="521" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-6.png" alt="" class="wp-image-485" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-6.png 992w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-6-300x158.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-6-768x403.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></figure>



<p class="wp-block-paragraph">　VSLayout\certificates配下には3つの証明書がある。ただし、これだけではオフラインインストールの際にエラーが発生するため、追加の証明書を事前に取得しておく必要がある。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="992" height="521" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-7.png" alt="" class="wp-image-487" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-7.png 992w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-7-300x158.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-7-768x403.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></figure>



<p class="wp-block-paragraph">　以下のリンク先から「Microsoft Windows Code Signing PCA 2024.crt」をダウンロードし、「certificates」フォルダに入れておく。</p>


<a rel="noopener" href="https://developercommunity.visualstudio.com/t/Visual-Studio-2022-Build-Tools:-Offline-/10925898#TPIN-N10936287" title="Developer Community" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/266c2c43cdb1c19dfeff7bde2a6e275f.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Developer Community</div><div class="blogcard-snippet external-blogcard-snippet">Developer Community</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://developercommunity.visualstudio.com/t/Visual-Studio-2022-Build-Tools:-Offline-/10925898#TPIN-N10936287" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">developercommunity.visualstudio.com</div></div></div></div></a>


<p class="wp-block-paragraph">　Build Tools for Visual Studioの準備は終了。</p>



<p class="wp-block-paragraph">（おまけ）<br>　コマンドプロンプトに入力したコマンドは、llama-cpp-pythonのビルドに必要なモノに限っている。-addコマンドでダウンロードするパッケージを宣言しており、以下のとおりである。</p>



<figure class="wp-block-table is-style-regular"><table><thead><tr><th>名前</th><th>コンポーネントID</th></tr></thead><tbody><tr><td>身分証明書</td><td>Microsoft.VisualStudio.Workload.VCTools</td></tr><tr><td>x64/x86 用 MSVC ビルド ツール (最新)</td><td>Microsoft.VisualStudio.Component.VC.Tools.x86.x64</td></tr><tr><td>Windows 11 SDK (10.0.26100.6901)</td><td>Microsoft.VisualStudio.Component.Windows11SDK.26100</td></tr><tr><td>Windows 用 C++ CMake ツール</td><td>Microsoft.VisualStudio.Component.VC.CMake.Project</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">　もし、追加したいモノがあれば以下のリンクを参考に、「&#8211;add コンポーネントID」を記載することで追加可能。</p>


<a rel="noopener" href="https://learn.microsoft.com/ja-jp/visualstudio/install/workload-component-id-vs-build-tools?view=visualstudio&#038;viewFallbackFrom=vs-2026&#038;preserve-view=true" title="Visual Studio Build Tools のワークロード ID とコンポーネント ID" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/62becbf9e66edbd7a674a2191e28faef.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Visual Studio Build Tools のワークロード ID とコンポーネント ID</div><div class="blogcard-snippet external-blogcard-snippet">Visual Studio のワークロード ID とコンポーネント ID を使用して、従来の Windows ベースのアプリケーションを構築する</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://learn.microsoft.com/ja-jp/visualstudio/install/workload-component-id-vs-build-tools?view=visualstudio" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">learn.microsoft.com</div></div></div></div></a>


<h3 class="wp-block-heading">②CMake</h3>



<p class="wp-block-paragraph">　ここからインストーラーをダウンロードしておく。</p>


<a rel="noopener" href="https://cmake.org/download" title="Download CMake" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fcmake.org%2Fdownload?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Download CMake</div><div class="blogcard-snippet external-blogcard-snippet">You can either download binaries or source code archives for the latest stable or previous release or access the current&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://cmake.org/download/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">cmake.org</div></div></div></div></a>


<h3 class="wp-block-heading">③CUDA Toolkit</h3>



<p class="wp-block-paragraph">　ここからインストーラーをダウンロードしておく。インストーラータイプはローカルを選択しておくこと。</p>


<a rel="noopener" href="https://developer.nvidia.com/cuda/toolkit" title="CUDA Toolkit - Free Tools and Training" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/7ab44af368dbef457ca8fca10377ff37.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">CUDA Toolkit &#8211; Free Tools and Training</div><div class="blogcard-snippet external-blogcard-snippet">Get access to SDKs, trainings, and connect with developers.</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://developer.nvidia.com/cuda/toolkit" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">developer.nvidia.com</div></div></div></div></a>


<h3 class="wp-block-heading">④cuDNN</h3>



<p class="wp-block-paragraph">　ここからインストーラーをダウンロードしておく。</p>


<a rel="noopener" href="https://developer.nvidia.com/cudnn-downloads" title="cuDNN 9.25.0 Downloads" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/7ab44af368dbef457ca8fca10377ff37.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">cuDNN 9.25.0 Downloads</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://developer.nvidia.com/cudnn-downloads" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">developer.nvidia.com</div></div></div></div></a>


<h2 class="wp-block-heading">3．開発端末へインストール</h2>



<h3 class="wp-block-heading">①Build Tools for Visual Studio</h3>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="567" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs1-1-1024x567.png" alt="" class="wp-image-520" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs1-1-1024x567.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs1-1-300x166.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs1-1-768x426.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs1-1.png 1101w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">コマンドプロンプトまたはPowerShellでVSLayoutへ移動し、以下のコマンドを実行する（要管理者権限）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>vs_BuildTools.exe --noWeb --noUpdateInstaller --wait</code></pre></div>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="750" height="441" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-16.png" alt="" class="wp-image-522" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-16.png 750w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-16-300x176.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　Visual Studio Installerが起動するので続行をクリックする。<br>　この操作でVisual Studio Installerがインストールされる（まだC++のビルドツールはインストールされていない）</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="886" height="498" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-18.png" alt="" class="wp-image-524" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-18.png 886w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-18-300x169.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-18-768x432.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-18-240x135.png 240w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-18-320x180.png 320w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-18-640x360.png 640w" sizes="(max-width: 886px) 100vw, 886px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　インストールが終わるとどのコンポーネントをインストールするか選択できる。<br>　基本的にオフラインインストールで用意したコンポーネントが選択されていると思うので、そのままインストールボタンを押して続行する。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="886" height="498" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-20.png" alt="" class="wp-image-526" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-20.png 886w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-20-300x169.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-20-768x432.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-20-240x135.png 240w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-20-320x180.png 320w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-20-640x360.png 640w" sizes="(max-width: 886px) 100vw, 886px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　このような画面になったらインストール完了。×でインストーラーを閉じておｋ。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="819" height="684" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs2.png" alt="" class="wp-image-527" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs2.png 819w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs2-300x251.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/btvs2-768x641.png 768w" sizes="(max-width: 819px) 100vw, 819px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　インストールが終わると、スタートメニューにVisual Studio 2026フォルダができている。<br>　ちゃんとインストールできているか確認するため、x64 Native Tools Command Prompt for VSを実行する。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="577" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-22-1024x577.png" alt="" class="wp-image-529" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-22-1024x577.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-22-300x169.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-22-768x433.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-22-240x135.png 240w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-22-320x180.png 320w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-22-640x360.png 640w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-22.png 1115w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　「cl」と入力し、実行した際に画像のようになればおｋ。</p>
</div>
</div>



<h3 class="wp-block-heading">②CMake</h3>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="495" height="387" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-24.png" alt="" class="wp-image-534" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-24.png 495w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-24-300x235.png 300w" sizes="(max-width: 495px) 100vw, 495px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　CMakeについては特に書くことはあまりないが、途中でインストールオプションが出てきた際に必ずパスを追加するオプションにチェックを入れたままにしておくこと。</p>
</div>
</div>



<h3 class="wp-block-heading">③CUDA Toolkit</h3>



<p class="wp-block-paragraph">　インストーラーの指示に従ってポチポチ進めてください。</p>



<h3 class="wp-block-heading">④cuDNN</h3>



<p class="wp-block-paragraph">　最近のインストーラーであればCUDA同様にポチポチ押していくだけでインストールできます。</p>



<p class="wp-block-paragraph">　ただし、昔のcuDNNはZIP形式のため、自分でCUDAがインストールされたフォルダにコピー＆ペーストする必要があります。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="992" height="521" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-25.png" alt="" class="wp-image-539" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-25.png 992w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-25-300x158.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-25-768x403.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">基本は以下のディレクトリにCUDAがあります（例：CUDA 13.3）</p>



<p class="wp-block-paragraph">C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3</p>
</div>
</div>



<h3 class="wp-block-heading">⑤CUDA関係の環境変数の確認</h3>



<p class="wp-block-paragraph">　ここでCUDA関係の資源が使えるようになっているか確認をします。基本的にはインストールした際に設定されているはずですが、万が一設定されていない場合は各自で環境変数を設定してください。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="603" height="501" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda1.png" alt="" class="wp-image-541" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda1.png 603w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda1-300x249.png 300w" sizes="(max-width: 603px) 100vw, 603px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">システム環境変数　変数名：Path</p>



<p class="wp-block-paragraph">私のPCにはCUDAが13.2と13.3が入っているためbinとbin\64がそれぞれ設定されていました。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="992" height="521" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-27.png" alt="" class="wp-image-543" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-27.png 992w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-27-300x158.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-27-768x403.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　CUDAフォルダにはincludeとlibフォルダがあります。これもPathに追加しておきましょう。</p>



<p class="wp-block-paragraph">　設定後のPathは以下のとおり（面倒なので13.2は追加しませんでした…）。</p>
</div>
</div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="634" height="501" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda2.png" alt="" class="wp-image-544" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda2.png 634w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda2-300x237.png 300w" sizes="(max-width: 634px) 100vw, 634px" /></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="527" height="501" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-34.png" alt="" class="wp-image-554" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-34.png 527w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-34-300x285.png 300w" sizes="(max-width: 527px) 100vw, 527px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　続いて、cuDNNの環境変数を設定します。今回私はv9.23をインストールしましたが、Program Files以下にインストールされていました。このうち、bin、include、libのパスを設定します。</p>



<p class="wp-block-paragraph">　変数名CUDNNとし、画像のパスを変数値に突っ込みます。</p>



<p class="wp-block-paragraph">　CUDNN以下のパスの構成としては「cuDNNのバージョン\xxx\CUDAバージョン」のはず。インストールした各ソフトのバージョンによって値は異なります。私はcuDNNが9.23、ターゲットのCUDAが13.3なのでこのパスで設定しました。</p>



<p class="wp-block-paragraph">　以上で環境変数の設定は終了です。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="553" height="228" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda3.png" alt="" class="wp-image-546" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda3.png 553w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda3-300x124.png 300w" sizes="(max-width: 553px) 100vw, 553px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　コマンドプロンプトを起動し「nvcc &#8211;version」を実行した際に、画像のようになればCUDAのパスが通っています。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="620" height="147" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda4-1.png" alt="" class="wp-image-556" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda4-1.png 620w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda4-1-300x71.png 300w" sizes="(max-width: 620px) 100vw, 620px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　コマンドプロンプトを起動し「where cudnn64_*.dll」を実行した際に、画像のようになればcuDNNのパスが通っています。</p>
</div>
</div>



<h2 class="wp-block-heading">4.llama-cpp-pythonのビルド</h2>



<p class="wp-block-paragraph">　環境変数を２種類設定しておく。ちなみに、以下のようにコマンドプロンプト上で設定してもよい。<br>　　set CMAKE_ARGS=-DGGML_CUDA=on<br>　　set FORCE_CMAKE=1<br>　その後仮想環境を立ち上げ、llama-cpp-pythonをpip installする。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="577" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-35-1024x577.png" alt="" class="wp-image-558" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-35-1024x577.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-35-300x169.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-35-768x433.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-35-240x135.png 240w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-35-320x180.png 320w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-35-640x360.png 640w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-35.png 1115w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">　仮想環境を立ち上げ、ggufファイルを読み込んでみましたが、ばっちりGPUを認識しています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="672" height="1024" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda5-672x1024.png" alt="" class="wp-image-565" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda5-672x1024.png 672w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda5-197x300.png 197w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda5-768x1170.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/cuda5.png 992w" sizes="(max-width: 672px) 100vw, 672px" /></figure><p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/06/08/llama-cpp-pythoncuda%e7%89%88%e3%81%ae%e3%83%93%e3%83%ab%e3%83%89%e7%92%b0%e5%a2%83%e3%82%92%e3%82%aa%e3%83%95%e3%83%a9%e3%82%a4%e3%83%b3%e3%81%a7%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/">llama-cpp-python(CUDA版)のビルド環境をオフラインで構築する</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2026/06/08/llama-cpp-pythoncuda%e7%89%88%e3%81%ae%e3%83%93%e3%83%ab%e3%83%89%e7%92%b0%e5%a2%83%e3%82%92%e3%82%aa%e3%83%95%e3%83%a9%e3%82%a4%e3%83%b3%e3%81%a7%e6%a7%8b%e7%af%89%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">476</post-id>	</item>
		<item>
		<title>VSCodeでContinueを使ってみる</title>
		<link>https://toybox.uranos8685.mydns.jp/2026/04/17/vscode%e3%81%a7continue%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2026/04/17/vscode%e3%81%a7continue%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Thu, 16 Apr 2026 15:14:00 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=493</guid>

					<description><![CDATA[<p>1．Ollamaをホストしている端末自身でContinueを利用する場合 ①Ollamaをインストールする 　以下のリンク先からインストーラーをダウンロード・インスコしておく。ついでに使用したいモデルもOllamaにセッ [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/04/17/vscode%e3%81%a7continue%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/">VSCodeでContinueを使ってみる</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">1．Ollamaをホストしている端末自身でContinueを利用する場合</h2>



<h3 class="wp-block-heading">①Ollamaをインストールする</h3>



<p class="wp-block-paragraph">　以下のリンク先からインストーラーをダウンロード・インスコしておく。ついでに使用したいモデルもOllamaにセットアップしておく。<br>　基本的にContinueを使用している間（チャット・入力支援など）はモデルがロードされっぱなしになるので軽めのモデルがおすすめ。<br>　私はQwen2.5-Coderを使ってます。VRAMの使用量は1.4GB程度です。</p>


<a rel="noopener" href="https://ollama.com/download" title="Download Ollama on macOS" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/03fb1a10ef158f8986c9778334c2af42.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Download Ollama on macOS</div><div class="blogcard-snippet external-blogcard-snippet">Download Ollama for macOS</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://ollama.com/download/mac" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">ollama.com</div></div></div></div></a>

<p>https://ollama.com/library/qwen2.5-coder</p>


<h3 class="wp-block-heading">②VSCodeにContinueをインストールする</h3>



<p class="wp-block-paragraph">　以下の拡張機能をインストールしておく。</p>


<a rel="noopener" href="https://marketplace.visualstudio.com/items?itemName=Continue.continue" title="Continue - open-source AI code agent - Visual Studio Marketplace" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/8c44ad48bf174fe07caab1ab6b9b1e10.default" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Continue &#8211; open-source AI code agent &#8211; Visual Studio Marketplace</div><div class="blogcard-snippet external-blogcard-snippet">Extension for Visual Studio Code &#8211; The leading open-source AI code agent</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://marketplace.visualstudio.com/items?itemName=Continue.continue" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">marketplace.visualstudio.com</div></div></div></div></a>


<h3 class="wp-block-heading">③－1 VSCodeの設定（Ollamaをホストしている端末自身でContinueを使う場合）</h3>



<p class="wp-block-paragraph">　公式ドキュメントは以下のリンク先にあります。ザックリ使えるよう備忘録程度の内容です。</p>


<a rel="noopener" href="https://docs.continue.dev/customize/model-providers/top-level/ollama" title="How to Configure Ollama with Continue | Continue Docs" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.continue.dev%2Fcustomize%2Fmodel-providers%2Ftop-level%2Follama?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">How to Configure Ollama with Continue | Continue Docs</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.continue.dev/customize/model-providers/top-level/ollama" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.continue.dev</div></div></div></div></a>

<a rel="noopener" href="https://docs.continue.dev/guides/ollama-guide" title="Using Ollama with Continue: A Developer&#x27;s Guide | Continue Docs" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fdocs.continue.dev%2Fguides%2Follama-guide?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Using Ollama with Continue: A Developer&#x27;s Guide | Continue Docs</div><div class="blogcard-snippet external-blogcard-snippet">Complete guide to setting up Ollama with Continue for local AI development. Learn installation, configuration, model sel&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://docs.continue.dev/guides/ollama-guide" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">docs.continue.dev</div></div></div></div></a>


<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue1-1024x683.jpg" alt="" class="wp-image-495" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue1-1024x683.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue1-300x200.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue1-768x512.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue1.jpg 1194w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　Continueをインストールすると、プライマリサイドバーにオレンジ枠のアイコンが追加されます。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="446" height="367" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue2.jpg" alt="" class="wp-image-496" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue2.jpg 446w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue2-300x247.jpg 300w" sizes="(max-width: 446px) 100vw, 446px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　クリックするとだいたいこんな感じで表示されると思います（既にセットアップ済みの状態なのでインスコした直後とは違うカモ🦆）。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="563" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue3-1024x563.jpg" alt="" class="wp-image-498" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue3-1024x563.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue3-300x165.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue3-768x423.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue3.jpg 1047w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　歯車マークを押すと設定が可能です。Modelsタブを押すと、チャット・オートコンプリート・コーディングでどのモデルを使うか指定できます。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="924" height="935" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue8.jpg" alt="" class="wp-image-507" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue8.jpg 924w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue8-296x300.jpg 296w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue8-768x777.jpg 768w" sizes="(max-width: 924px) 100vw, 924px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　左上の丸印に＋のボタンをおすとチャットモデルの追加ができます。<br>　ProviderはOllama、ModelはAutodetectを選んでおくと、インストール済みのモデルを探してくれます。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="422" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue4-2-1024x422.jpg" alt="" class="wp-image-506" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue4-2-1024x422.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue4-2-300x124.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue4-2-768x316.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue4-2.jpg 1522w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　ドロップダウンリストにOllamaにインストール済みのモデルが出てくると思います。<br>　ちなみにドロップダウンリストの横の歯車マークを押すとyamlファイルが表示されます。自分で各機能でどのモデルを表示させるか定義することが出来ます。<br>　私はautocompleteでqwen2.5-coderだけを出すような設定にしています。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="862" height="768" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue5.jpg" alt="" class="wp-image-503" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue5.jpg 862w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue5-300x267.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue5-768x684.jpg 768w" sizes="(max-width: 862px) 100vw, 862px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　早速オートコンプリート機能を試してみましょう。defと打っただけで候補を提案してくれました。もちろんローカルLLMなのでネットワーク通信は行われません。また、モデルはqwen2.5-coderを使っています。</p>
</div>
</div>



<h3 class="wp-block-heading">③－2 VSCodeの設定（Ollamaをホストしていない同一ネットワーク上の端末からContinueを使う場合）</h3>



<p class="wp-block-paragraph">　基本的には③－1ですが、少し異なる部分がありますのでそこを補足します。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="618" height="585" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue6.jpg" alt="" class="wp-image-504" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue6.jpg 618w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue6-300x284.jpg 300w" sizes="(max-width: 618px) 100vw, 618px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　まず、Ollamaをホストしている端末のシステム環境変数に「OLLAMA_HOST」と「OLLAMA_ORIGINS」を追加します。<br>　OLLAMA_HOSTはリクエストを待ち受けるインターフェースとポートを指定します。0.0.0.0で全てのLAN上のIPからの通信を受け付けます。<br>　OLLAMA_ORIGINSはCORSを許可するオリジンをカンマ区切りで指定します。*をつけておくとすべて許可します。<br>　</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="515" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue7-1024x515.jpg" alt="" class="wp-image-505" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue7-1024x515.jpg 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue7-300x151.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue7-768x386.jpg 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/continue7.jpg 1429w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　Continueを使いたい端末（非Ollamaホスト端末）にContinueをインストールし、モデルの設定を開きます。<br>　丸印に＋のアイコンからOllamaをプロバイダーに選んでいいのですが、Ollamaが入っていないのでモデルは当然見つかりません。<br>　ドロップダウンリスト横の歯車マークを押し、config.yamlに画像のようにapiBaseにOllamaをインストールした端末のipアドレスとOllamaのリクエストを受け付けているポート番号（デフォは11434）を指定し、モデル名を正確に記載します。<br>　ここでいうモデル名はOllama上で表示されているモデル名です。huggingface等のモデル名と違う名前で自分でモデルをインポートしている場合は、その名前を記載しないと呼び出せませんので注意。<br>　簡単な確認方法は下の図のように、Ollamaを立ち上げた際のチャット画面にあるリストを確認するのがいいでしょう。</p>
</div>
</div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="632" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-12.png" alt="" class="wp-image-509" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-12.png 802w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-12-300x236.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-12-768x605.png 768w" sizes="(max-width: 802px) 100vw, 802px" /></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="971" height="700" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/04/continue9.jpg" alt="" class="wp-image-516" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/04/continue9.jpg 971w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/04/continue9-300x216.jpg 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/04/continue9-768x554.jpg 768w" sizes="(max-width: 971px) 100vw, 971px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　では、さっそくオートコンプリート機能を使ってみます。今回Continueをインストールした端末はMacStudioの仮想マシンにインストールしたWindowsにリモートデスクトップ接続でテストします。メモリは8GBしか割り当てていないため、LLMを呼び起こすには厳しいスペックです。<br>　しかし、Ollamaをホストしている端末は別PCのため、ばっちりオートコンプリートの恩恵を受けられます。<br>　ネットワークへの負荷もほぼなく、せいぜい入力した際に数百KB程度の通信が発生する程度だと思います。</p>
</div>
</div>



<p class="wp-block-paragraph"></p><p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/04/17/vscode%e3%81%a7continue%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/">VSCodeでContinueを使ってみる</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2026/04/17/vscode%e3%81%a7continue%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">493</post-id>	</item>
		<item>
		<title>Presenton+Ollammaでパワーポイント資料を生成してみた</title>
		<link>https://toybox.uranos8685.mydns.jp/2026/02/18/presentonollamma%e3%81%a7%e3%83%91%e3%83%af%e3%83%bc%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e8%b3%87%e6%96%99%e3%82%92%e7%94%9f%e6%88%90%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2026/02/18/presentonollamma%e3%81%a7%e3%83%91%e3%83%af%e3%83%bc%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e8%b3%87%e6%96%99%e3%82%92%e7%94%9f%e6%88%90%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Tue, 17 Feb 2026 22:58:00 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=563</guid>

					<description><![CDATA[<p>1．はじめに 　GeminiにPowerPoint資料を作成できるCanvas機能があることを知り、ローカルLLMでも生成できるツールはないか調べていると、PresentonというOSSがあることを知ったので、早速試して [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/02/18/presentonollamma%e3%81%a7%e3%83%91%e3%83%af%e3%83%bc%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e8%b3%87%e6%96%99%e3%82%92%e7%94%9f%e6%88%90%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/">Presenton+Ollammaでパワーポイント資料を生成してみた</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">1．はじめに</h2>



<p class="wp-block-paragraph">　GeminiにPowerPoint資料を作成できるCanvas機能があることを知り、ローカルLLMでも生成できるツールはないか調べていると、PresentonというOSSがあることを知ったので、早速試してみました。</p>



<h2 class="wp-block-heading">2．Presentonのインストール</h2>



<p class="wp-block-paragraph">　以下からインストーラーをダウンロードします。</p>


<a rel="noopener" href="https://presenton.ai/download" title="Download Free AI Presentation App | Presenton" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/05e00c97603650b580818c4527a441b5.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Download Free AI Presentation App | Presenton</div><div class="blogcard-snippet external-blogcard-snippet">Download Presenton for Windows, macOS, or Linux. Create AI presentations locally with OpenAI, Gemini, or Ollama, then ex&#8230;</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://presenton.ai/download" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">presenton.ai</div></div></div></div></a>


<p class="wp-block-paragraph">　全てのユーザーに対しインストールするか、現在のユーザーのみにインストールするか聞かれるのみであとはポチポチ進めていくだけです。インストール対象はお好みの方を選んでください。私は全てのユーザーを対象にインストールしました。</p>



<p class="wp-block-paragraph">　インストール先のフォルダパスにスペースなどが含まれるとエラーになる場合があるため、私はCドライブ直下にPresentonフォルダを作成し、インストールしました。</p>



<h2 class="wp-block-heading">3．Presentonの設定</h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="577" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-37-1024x577.png" alt="" class="wp-image-575" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-37-1024x577.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-37-300x169.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-37-768x433.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-37-240x135.png 240w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-37-320x180.png 320w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-37-640x360.png 640w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-37.png 1266w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　Presentonを立ち上げるとセットアップ画面になります。モードはTemplate Presentation Modeのままでおｋ。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="944" height="1024" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-39-944x1024.png" alt="" class="wp-image-577" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-39-944x1024.png 944w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-39-277x300.png 277w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-39-768x833.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-39.png 1161w" sizes="(max-width: 944px) 100vw, 944px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　次の画面ではLLMを選択します。Text ProviderにはOllama、OllamaURLはOllamaをホストしている端末のIPアドレス:Ollamaポート番号を入れます。Ollamaをホストしている端末がPresentonを入れた端末と同一であれば、Use default Ollama URLのリンクを押せばいいです。ただし、ポート番号を変更している場合は自分で直してください。</p>



<p class="wp-block-paragraph">　choose a supported modelにはOllamaに入っているモデルを選んでおいてください。リストにあるモデルが、Ollamaに1つもなければOllamaにモデルを追加すること。</p>



<p class="wp-block-paragraph">　その下にImage Generation Settingsがあり、これを有効にすることで画像生成もやってくれるようになります。ただ、完全ローカルで生成するにはComfy UIしか選択肢はありません。今回これはやりません。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="639" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-41-1024x639.png" alt="" class="wp-image-579" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-41-1024x639.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-41-300x187.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-41-768x479.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-41.png 1161w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　これでセットアップ完了です。</p>
</div>
</div>



<h2 class="wp-block-heading">3.パワーポイント資料作成</h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="639" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-42-1024x639.png" alt="" class="wp-image-580" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-42-1024x639.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-42-300x187.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-42-768x479.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-42.png 1161w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　作成画面はこんな感じ。</p>



<p class="wp-block-paragraph">　作ってほしい内容をWrite promptに入力します。その下には、ドキュメントなどを添付することが可能で、これも踏まえてパワーポイントの作成が行われます。</p>



<p class="wp-block-paragraph">　Write promptの上にはスライド枚数、言語、細々としたオプション設定が可能です。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="680" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-45-1024x680.png" alt="" class="wp-image-583" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-45-1024x680.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-45-300x199.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-45-768x510.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-45-1536x1020.png 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-45.png 1869w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　生成を始めるとこんな感じの画面になります。しっかり、GPUを使ってくれています。</p>



<p class="wp-block-paragraph">　もちろんローカル生成なので、ネットワーク通信は発生していません。もし、モデルが読み込まれないなどがあれば、設定でOllamaのモデル名を見直してください。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="708" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-47-1024x708.png" alt="" class="wp-image-585" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-47-1024x708.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-47-300x207.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-47-768x531.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-47-1536x1061.png 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-47.png 1903w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　少し待つと、こんな感じで各スライドの内容が生成されます。</p>



<p class="wp-block-paragraph">　内容の修正、スライドの削除などの編集が行えます。</p>



<p class="wp-block-paragraph">　問題なければ、右下のSelect a Templateをクリック。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="706" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-48-1024x706.png" alt="" class="wp-image-586" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-48-1024x706.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-48-300x207.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-48-768x530.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-48-1536x1059.png 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/image-48.png 1905w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　ここではパワーポイントのテーマを選べます。Customで自分の好みのテンプレートを作ることも出来ますが、Libre Officeをインストールしておく必要があります。</p>



<p class="wp-block-paragraph">　今回はLayouts-22を選んでみました。そしたら、Generate Presentationをクリックして生成させます。</p>
</div>
</div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:66.66%">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="534" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/presenton1-1024x534.png" alt="" class="wp-image-589" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/presenton1-1024x534.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/presenton1-300x156.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/presenton1-768x400.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/presenton1-1536x801.png 1536w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/06/presenton1-2048x1068.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<p class="wp-block-paragraph">　少し待つと、1枚ずつスライドが生成されます。右端にLLMとのチャットウィンドウがあり、対話式で指示を出すこともできます。</p>



<p class="wp-block-paragraph">　また、スライドの内容もここで手動で編集が可能です。</p>



<p class="wp-block-paragraph">　終わったら、右上のExportでpptxファイルを出力します。</p>
</div>
</div>



<p class="wp-block-paragraph"></p><p>The post <a href="https://toybox.uranos8685.mydns.jp/2026/02/18/presentonollamma%e3%81%a7%e3%83%91%e3%83%af%e3%83%bc%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e8%b3%87%e6%96%99%e3%82%92%e7%94%9f%e6%88%90%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/">Presenton+Ollammaでパワーポイント資料を生成してみた</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2026/02/18/presentonollamma%e3%81%a7%e3%83%91%e3%83%af%e3%83%bc%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e8%b3%87%e6%96%99%e3%82%92%e7%94%9f%e6%88%90%e3%81%97%e3%81%a6%e3%81%bf%e3%81%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">563</post-id>	</item>
		<item>
		<title>LRC Maker(Uranos8685)　配布ページ</title>
		<link>https://toybox.uranos8685.mydns.jp/2025/09/29/lrc-makeruranos8685%e3%80%80%e9%85%8d%e5%b8%83%e3%83%9a%e3%83%bc%e3%82%b8/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2025/09/29/lrc-makeruranos8685%e3%80%80%e9%85%8d%e5%b8%83%e3%83%9a%e3%83%bc%e3%82%b8/#comments</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Mon, 29 Sep 2025 14:41:05 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=312</guid>

					<description><![CDATA[<p>はじめに 　Plex Media Serverには、lrcファイルを認識し、Apple Musicのように再生位置にリンクした歌詞表示をしてくれる機能があります。 　lrcファイルとは基本的に「[mm:ss.xx(=1/ [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2025/09/29/lrc-makeruranos8685%e3%80%80%e9%85%8d%e5%b8%83%e3%83%9a%e3%83%bc%e3%82%b8/">LRC Maker(Uranos8685)　配布ページ</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">はじめに</h2>



<p class="wp-block-paragraph">　Plex Media Serverには、lrcファイルを認識し、Apple Musicのように再生位置にリンクした歌詞表示をしてくれる機能があります。</p>



<p class="wp-block-paragraph">　lrcファイルとは基本的に「[mm:ss.xx(=1/100秒)]歌詞テキスト」を記録したものです。</p>



<p class="wp-block-paragraph">　Plex Media ServerではUTF-8形式のlrcファイルを認識できるのですが、既存のソフトで使いやすいものがなかったので作成しました。思ったよりも出来がよかったので、公開しようと思います。</p>



<p class="wp-block-paragraph">　私のお気に入りポイントは、クリップボードから歌詞の取り込みができること、既存のlrcを取り込み一部の歌詞のタイムスタンプのみ変更すること、取り込んだ歌詞データをタイムスタンプを付与しながら編集できること、シークバーで再生位置を自由に変えられることです。なかなか既存のlrc作成ツールにはない機能(私が見つけられていないだけかもしれませんが)で、lrcファイルの作成が捗ります。</p>



<h2 class="wp-block-heading">LRC Maker(Uranos8685)　スクリーンショット</h2>



<p class="has-text-align-center wp-block-paragraph">実行イメージ(macOS版 v1.0.2.1)</p>



<figure class="wp-block-image aligncenter size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/01/lrc_maker_v1.0.2.1_screenshot.png"><img loading="lazy" decoding="async" width="1024" height="850" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/01/lrc_maker_v1.0.2.1_screenshot-1024x850.png" alt="" class="wp-image-424" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/01/lrc_maker_v1.0.2.1_screenshot-1024x850.png 1024w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/01/lrc_maker_v1.0.2.1_screenshot-300x249.png 300w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/01/lrc_maker_v1.0.2.1_screenshot-768x637.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2026/01/lrc_maker_v1.0.2.1_screenshot.png 1312w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">おまけ情報</h2>



<p class="wp-block-paragraph">　LRC Makerを作っている間に、PlexのiPhone用ミュージックアプリ「Plexamp」のlrc表示に関する小ネタを発見しました。それは、lrcファイルの改行コードによって行間の表示のされ方が異なります。</p>



<p class="wp-block-paragraph">　以下の画像は改行コードのみを変えたlrcファイルが適用された音声ファイルを再生している画面です。左がCRLF（Windows標準）で右がLF（Unix系標準）です。CRLFの場合、行間が１行分空いています。公式ドキュメントとかの記載を探しましたが、私が見た限りではこの点に関する記述は見つけられませんでした。いつかこの仕様が変わってしまうかもしれませんが、LRC Maker(Uranos8685)では、設定から改行コードを選択できるようにしておきました。ちなみに、Web版のPlex及びmacOS用のPlexampで再生した場合、改行コードによる行間の違いはありませんでした。何故…？</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image alignleft size-large"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_crlf-scaled.png"><img loading="lazy" decoding="async" width="471" height="1024" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_crlf-471x1024.png" alt="" class="wp-image-331" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_crlf-471x1024.png 471w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_crlf-138x300.png 138w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_crlf-768x1670.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_crlf-706x1536.png 706w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_crlf-942x2048.png 942w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_crlf-scaled.png 1177w" sizes="(max-width: 471px) 100vw, 471px" /></a><figcaption class="wp-element-caption">改行コードがCRLF</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image alignleft size-large is-resized"><a href="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_lf-scaled.png"><img loading="lazy" decoding="async" width="471" height="1024" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_lf-471x1024.png" alt="" class="wp-image-332" style="width:471px;height:auto" srcset="https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_lf-471x1024.png 471w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_lf-138x300.png 138w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_lf-768x1670.png 768w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_lf-706x1536.png 706w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_lf-942x2048.png 942w, https://toybox.uranos8685.mydns.jp/wp-content/uploads/2025/09/plexamp_lf-scaled.png 1177w" sizes="(max-width: 471px) 100vw, 471px" /></a><figcaption class="wp-element-caption">改行コードがLF</figcaption></figure>
</div>
</div>



<p class="wp-block-paragraph">　余談ですが、宵待草の作詞者である竹久夢二の記念館である「竹久夢二伊香保記念館」はおすすめですヨ。学芸員の方の解説をゆったり聞きながら展示物を見たり、歴史あるオルゴールの音はぜひ１度聴いてみてほしいです。伊香保・草津旅行のついでに寄ってみてはいかがですか。私は伊香保に行くたびに寄っています。あ、竹久夢二伊香保記念館の回し者ではないですヨ。</p>



<h2 class="wp-block-heading">主要な機能（という名のこだわりポイント）について</h2>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"><span class="cocoon-custom-text-1"><span class="bold"><span class="marker"><span class="fz-20px"><span class="fz-24px">主な機能</span></span></span></span></span></div>
<ul class="wp-block-list">
<li>音声ファイルを読み込み、音声ファイルを聞きながら歌詞にタイムスタンプを[mm:ss.xx]フォーマットで付与。</li>



<li>VLCのdllを利用しているため、<span class="marker-under">VLCで再生できる音楽ファイルの読み込みが可能</span>（動作にはvlcが必須）。</li>



<li><span class="marker-under">再生速度は</span>0.50x〜5.00xの範囲で<span class="marker-under">任意に指定可能</span>。</li>



<li>読み込んだ<span class="marker-under">音声ファイルの波形表示に対応</span>(間奏部分を見極めるのに便利)。</li>



<li>歌詞は、<span class="marker-under">既存のlrc・txt形式のファイルからの読み込み</span>に加え、<span class="marker-under-red">クリップボードにコピーされているテキストを歌詞データとして取り込み可能</span>。</li>



<li>読み込んだ歌詞に対し、画面上で歌詞行の追加・削除・歌詞の内容の変更に対応。</li>



<li>付与済みのタイムスタンプを一括でタイムスタンプ調整可能。</li>



<li>歌詞を編集した際に、誤って削除した歌詞行を元に戻す、Undo機能<s>（自分がおっちょこちょいで消してしまうため実装）</s>。</li>



<li><span class="marker-under">読み込んだ歌詞ファイルにタイムスタンプが付与されている場合、一部（あるいは全部）の歌詞行のタイムスタンプの打ち直しが可能</span>（新規でタイムスタンプを付与するのと同様に、音声再生中にEnterキーを押すだけで既存のタイムスタンプを置換）。</li>



<li>タイムスタンプが付与された<span class="marker-under-red">歌詞の行をダブルクリックすることで、再生位置をそのタイムスタンプの位置に移動</span>。</li>



<li>タイトル、アーティスト、オフセットなどのメタデータ書き込みに対応（ti, ar, al, by, offset）。</li>



<li>タイムスタンプを付与したlrcファイルは音声ファイルと同じディレクトリに、「音声ファイル名.lrc」で保存(文字コードはUTF-8)。</li>



<li>書き出すlrcファイルの<span class="marker-under">改行コードをCRLFとLFから選択可能</span>。</li>



<li>音声ファイルを開いている場合、歌詞ファイルを開く際に音声ファイルと同じフォルダを自動で表示。（音声ファイルと異なるディレクトリに保存された歌詞ファイルも選択することも可能）。</li>



<li><span class="marker-under">保存ボタンを押すことで、開いている音声ファイルと同じディレクトリに「音声ファイル名.lrc」の形でワンクリックで保存可能</span>（ユーザのLRCのファイル名設定等の操作を省略。基本的にLRCファイルは音声ファイルと同じディレクトリに同名.lrcで保存・使用されることが大半のため）。</li>
</ul>
</div>



<h2 class="wp-block-heading">当ソフトウェアを利用する際の注意事項</h2>



<p class="wp-block-paragraph">　LRC Maker(Uranos8685)(以下、当ソフトウェアといいます)はフリーソフトです。個人・法人に限らず、利用者は自由に当ソフトウェアを利用することができます。ただし、当プログラムの著作権は作者であるUranos8685に帰属します。</p>



<p class="wp-block-paragraph">　当ソフトウェアを利用したことによる、データの破損、消失、著作権法などの各種法規違反などによる、いかなる損害も作者であるUranos8685は一切の責任を負いません。利用者の自己責任のもとで使用してください。大事なデータは必ずバックアップを取った上で作業しましょう。</p>



<p class="wp-block-paragraph">　当ソフトウェアの再配布、転載は禁止します。</p>



<p class="wp-block-paragraph">　当ソフトウェアの不具合を発見した場合や要望等がありましたら、当ページにコメントしてください。本業の関係もあり全てに対応はできませんが、有用そうな機能の追加や可能な限りの不具合修正は対応したいと思います。</p>



<p class="wp-block-paragraph">　当プログラムを利用して作成したlrcファイルを配布することを禁止することとし、私的利用の範囲内で、当プログラムを利用してください（歌詞にも著作権はあります。これを著作権者に無断で配布することは著作権法に違反します。）。ただし、当プログラムを利用してlrcファイルを作成・配布する者がlrcファイルに記録された歌詞の著作権を有している場合、著作権団体から配布の許可を受けている場合、すでに著作権が切れている歌詞を配布する場合など、著作権法等の各種法規に違反しない場合はこの限りではありません。</p>



<p class="wp-block-paragraph">　公序良俗の範囲内で、音楽ライフを楽しみましょう。</p>



<p class="wp-block-paragraph">　以上の事項に同意できる方のみ、以下のリンクからダウンロードをして利用してください。</p>



<h2 class="wp-block-heading">ダウンロードリンク</h2>



<p class="wp-block-paragraph">プログラムの動作にVLCが必須ですので、VLCをインストールした上で当プログラムを使用してください。</p>



<p class="wp-block-paragraph">※Windows版での動作にはVLCをインストールした際に展開されるlibvlc.dllが「&#8221;C:/Program Files/VideoLAN/VLC&#8221;」フォルダに存在する必要があります。</p>



<p class="wp-block-paragraph">○macOS（動作確認環境：Mac Studio M4 Max、macOS Tahoe26.0）</p>


<div class="sdm_download_button_box_default"><div class="sdm_download_link"><a href="https://toybox.uranos8685.mydns.jp/?sdm_process_download=1&#038;download_id=461" class="sdm_download green" title="mac_LRC Maker(Uranos8685)v1.1.3" >Download Now!</a></div></div>


<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">○Windows（動作確認環境：Windows11Pro 64bit-25H2）※v1.0.2よりParallels上のArm版Windows11では動作するようにはなりましたが、スナドラCPUの実機を所有しておらず詳細な検証ができないため動作を保証できません。</p>


<div class="sdm_download_button_box_default"><div class="sdm_download_link"><a href="https://toybox.uranos8685.mydns.jp/?sdm_process_download=1&#038;download_id=460" class="sdm_download green" title="win64_LRC-MakerUranos8685v1.1.3" >Download Now!</a></div></div>


<h2 class="wp-block-heading">更新履歴</h2>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2025年9月29日<br>　配布ページ作成、公開</h3>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">2025年10月4日<br>　mac版v1.0公開</h3>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2025年11月8日<br>　Windows版v1.0公開</h3>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2025年11月10日<br>　Windows版v1.0.1公開</h3>



<p class="is-style-danger-box has-box-style wp-block-paragraph">不具合修正</p>



<ul class="wp-block-list">
<li><s>読み込んだ音声ファイル名を改行して、すべて表示するように変更</s>→うまく動いていないようなので改めて実装し直し(；_；)</li>



<li>歌詞ファイルを読み込んだ際に、歌詞の1行目を選択した状態になるように変更</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2026年1月29日<br>　Windows版及びmac版v1.0.2公開</h3>



<p class="is-style-danger-box has-box-style wp-block-paragraph">不具合修正</p>



<ul class="wp-block-list">
<li>プログラム内の余計なコードを削除</li>



<li>タイムスタンプ付与時に歌詞の先頭の空白を強制削除していた仕様を廃止</li>



<li>ボタンレイアウトを変更</li>
</ul>



<p class="is-style-info-box has-box-style wp-block-paragraph">機能追加</p>



<ul class="wp-block-list">
<li>lrcファイル保存時に、任意の場所・名前で出力できるオプション「保存時に場所を選択する」を設定に追加（このオプションを使ってlrcを出力した際は当該ディレクトリを記憶し、次回保存時も同じディレクトリを表示）</li>



<li>歌詞の先頭または末尾の空白を除去するオプションを設定に追加</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2026年1月30日<br>　mac版v1.0.2.1公開</h3>



<p class="is-style-danger-box has-box-style wp-block-paragraph">不具合修正</p>



<ul class="wp-block-list">
<li>オーディオファイルのパスに含まれる特定の文字（「赫」など）が、macOSのファイルシステム上の正規化形式（NFD/互換漢字）と、Pythonが期待する形式（NFC）とで一致していないことによる音声ファイルの読み取りに失敗するケースがあったため、パスが見つからない場合に類似するパスをディレクトリ内から検索して補正する機能をプログラム内部に実装。</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2026年1月31日<br>　Windows版及びmac版v1.1公開</h3>



<p class="is-style-danger-box has-box-style wp-block-paragraph">不具合修正</p>



<ul class="wp-block-list">
<li>vlcでは再生時間を50ms毎にしか返さないため、PCのシステムクロックを使用して厳密にタイムスタンプを付与するように変更</li>



<li>読み込んだ音楽ファイル名が長い場合に、自動スクロールして全文を読めるように変更</li>
</ul>



<p class="is-style-info-box has-box-style wp-block-paragraph">機能追加</p>



<ul class="wp-block-list">
<li>作成した歌詞データをタイムスタンプなしのtxtファイルとして出力する機能を追加</li>



<li>作成した歌詞データをタイムスタンプ付きでクリップボードにコピーする機能を追加</li>



<li>歌詞データのスペースについて、全角スペースが含まれる場合には全て半角スペースに一括変換し、半角スペースしかない場合は全角スペースに一括変換する機能をその他機能ボタン内に追加</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2026年2月9日<br>　Windows版及びmac版v1.1.1公開</h3>



<p class="is-style-danger-box has-box-style wp-block-paragraph">不具合修正</p>



<ul class="wp-block-list">
<li>連続で音楽を読み込んだ際にメモリ上にゴミファイルが残っていたため、メモリ開放処理を変更し都度メモリを開放するように変更</li>



<li>一時停止後に再生すると再生時間がおかしくなる場合があるため、修正</li>



<li>Windows版についてPython仮想環境を見直し、ファイルサイズを若干縮小</li>
</ul>



<p class="is-style-info-box has-box-style wp-block-paragraph">機能追加</p>



<ul class="wp-block-list">
<li>歌詞選択行を再生位置に追従させる機能を追加</li>



<li>歌詞追従機能のショートカットを追加（Ctrl+AまたはCmd+A）</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2026年2月15日<br>　Windows版及びmac版v1.1.2公開</h3>



<p class="is-style-danger-box has-box-style wp-block-paragraph">不具合修正</p>



<ul class="wp-block-list">
<li>歌詞自動追従機能が、最後にタイムスタンプ付与した歌詞より前の歌詞で動作しない不具合を修正</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<h3 class="wp-block-heading">2026年2月15日<br>　Windows版及びmac版v1.1.3公開</h3>



<p class="is-style-info-box has-box-style wp-block-paragraph">機能追加</p>



<ul class="wp-block-list">
<li>付与済みのタイムスタンプについて、一括でタイムスタンプを調整する機能を追加</li>



<li>一定のミリ秒以内にタイムスタンプを連続して付与した場合、タイムスタンプの秒数を最初に付与したタイムスタンプと揃えるオプションを追加</li>
</ul>



<p class="is-style-warning-box has-box-style wp-block-paragraph">自己署名証明書の追加（2026年2月21日 Windows版のみ）</p>



<ul class="wp-block-list">
<li>自己署名証明書を追加しました。Windowsのスマートアプリコントロールに引っかかりにくくなる…かも？</li>
</ul>
</div>



<h2 class="wp-block-heading">FAQ</h2>



<p class="wp-block-paragraph">Q：アプリのファイルサイズが大きいが？<br>A：Pythonでアプリの作成をしており、使用しているライブラリが容量を喰っているようです。ごめんなさい。</p>



<p class="wp-block-paragraph">Q：起動に時間がかかる<br>A：Pythonの環境がまずバックグラウンドで起動した後、アプリ本体が立ち上がるためウィンドウが立ち上がるのに時間がかかるのは仕様です( -_-) _旦~~</p>



<h2 class="wp-block-heading"><strong>今後追加予定の機能</strong>（<s>自分が欲しい機能</s>）</h2>



<p class="wp-block-paragraph"><s>○タイムスタンプ付与時に歌詞の前のスペースを強制削除しているため、スペース削除の実行有無をオプションで選択可能に変更</s>→v1.0.2で実装<br><s>○歌詞ファイルを強制的に音声ファイルと同ディレクトリへ「音声ファイル名.lrc」で出力しているところ、オプションから任意のディレクトリ・ファイル名で出力するよう指定できるように変更</s>→v1.0.2で実装<br><s>○スペースを全角→半角（または半角→全角）へ一括変換する機能</s>→v1.1で実装<br><s>○読み込んだ（作成した）LRCをタイムスタンプなしの純粋な歌詞txtファイルを出力する機能</s>→v1.1で実装<br><s>○読み込んだ音声ファイル名を改行して、すべて表示するように変更</s>→v1.1で実装<br><s>〇作成した歌詞データをクリップボードへコピーする機能</s>→v1.1で実装<br><br>個人開発ですのでマイペースに実装していきます。</p><p>The post <a href="https://toybox.uranos8685.mydns.jp/2025/09/29/lrc-makeruranos8685%e3%80%80%e9%85%8d%e5%b8%83%e3%83%9a%e3%83%bc%e3%82%b8/">LRC Maker(Uranos8685)　配布ページ</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2025/09/29/lrc-makeruranos8685%e3%80%80%e9%85%8d%e5%b8%83%e3%83%9a%e3%83%bc%e3%82%b8/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">312</post-id>	</item>
		<item>
		<title>MacでSafetensors形式のモデルをGGUFに変換する方法</title>
		<link>https://toybox.uranos8685.mydns.jp/2025/09/20/mac%e3%81%a7safetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92gguf%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2025/09/20/mac%e3%81%a7safetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92gguf%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Sat, 20 Sep 2025 05:06:10 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=299</guid>

					<description><![CDATA[<p>前提条件 　Python（3.10）がインストール済であること。他バージョンでもいけるが、これ以上新しいと、仮想環境にllama.cppのrequirements.txtをpipインストールしようとした際にバージョンアン [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2025/09/20/mac%e3%81%a7safetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92gguf%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/">MacでSafetensors形式のモデルをGGUFに変換する方法</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">前提条件</h2>



<p class="wp-block-paragraph">　Python（3.10）がインストール済であること。他バージョンでもいけるが、これ以上新しいと、仮想環境にllama.cppのrequirements.txtをpipインストールしようとした際にバージョンアンマッチでエラーとなるため注意（１敗）。</p>



<h2 class="wp-block-heading">Homebrewのインストール</h2>



<p class="wp-block-paragraph">　以下のコマンドを実行する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;</code></pre></div>



<p class="wp-block-paragraph">　実行結果は以下のとおり。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>(base) Mac-Studio ~ % /bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;
==&gt; Checking for `sudo` access (which may request your password)...
Password:
==&gt; This script will install:
/opt/homebrew/bin/brew
/opt/homebrew/share/doc/homebrew
/opt/homebrew/share/man/man1/brew.1
/opt/homebrew/share/zsh/site-functions/_brew
/opt/homebrew/etc/bash_completion.d/brew
/opt/homebrew
/etc/paths.d/homebrew
==&gt; The following new directories will be created:
/opt/homebrew/bin
/opt/homebrew/etc
/opt/homebrew/include
/opt/homebrew/lib
/opt/homebrew/sbin
/opt/homebrew/share
/opt/homebrew/var
/opt/homebrew/opt
/opt/homebrew/share/zsh
/opt/homebrew/share/zsh/site-functions
/opt/homebrew/var/homebrew
/opt/homebrew/var/homebrew/linked
/opt/homebrew/Cellar
/opt/homebrew/Caskroom
/opt/homebrew/Frameworks

Press RETURN/ENTER to continue or any other key to abort:
==&gt; /usr/bin/sudo /usr/bin/install -d -o root -g wheel -m 0755 /opt/homebrew
==&gt; /usr/bin/sudo /bin/mkdir -p /opt/homebrew/bin /opt/homebrew/etc /opt/homebrew/include /opt/homebrew/lib /opt/homebrew/sbin /opt/homebrew/share /opt/homebrew/var /opt/homebrew/opt /opt/homebrew/share/zsh /opt/homebrew/share/zsh/site-functions /opt/homebrew/var/homebrew /opt/homebrew/var/homebrew/linked /opt/homebrew/Cellar /opt/homebrew/Caskroom /opt/homebrew/Frameworks
==&gt; /usr/bin/sudo /bin/chmod ug=rwx /opt/homebrew/bin /opt/homebrew/etc /opt/homebrew/include /opt/homebrew/lib /opt/homebrew/sbin /opt/homebrew/share /opt/homebrew/var /opt/homebrew/opt /opt/homebrew/share/zsh /opt/homebrew/share/zsh/site-functions /opt/homebrew/var/homebrew /opt/homebrew/var/homebrew/linked /opt/homebrew/Cellar /opt/homebrew/Caskroom /opt/homebrew/Frameworks
==&gt; /usr/bin/sudo /bin/chmod go-w /opt/homebrew/share/zsh /opt/homebrew/share/zsh/site-functions
==&gt; /usr/bin/sudo /usr/sbin/chown xxx /opt/homebrew/bin /opt/homebrew/etc /opt/homebrew/include /opt/homebrew/lib /opt/homebrew/sbin /opt/homebrew/share /opt/homebrew/var /opt/homebrew/opt /opt/homebrew/share/zsh /opt/homebrew/share/zsh/site-functions /opt/homebrew/var/homebrew /opt/homebrew/var/homebrew/linked /opt/homebrew/Cellar /opt/homebrew/Caskroom /opt/homebrew/Frameworks
==&gt; /usr/bin/sudo /usr/bin/chgrp admin /opt/homebrew/bin /opt/homebrew/etc /opt/homebrew/include /opt/homebrew/lib /opt/homebrew/sbin /opt/homebrew/share /opt/homebrew/var /opt/homebrew/opt /opt/homebrew/share/zsh /opt/homebrew/share/zsh/site-functions /opt/homebrew/var/homebrew /opt/homebrew/var/homebrew/linked /opt/homebrew/Cellar /opt/homebrew/Caskroom /opt/homebrew/Frameworks
==&gt; /usr/bin/sudo /usr/sbin/chown -R xxx:admin /opt/homebrew
==&gt; Downloading and installing Homebrew...
remote: Enumerating objects: 310230, done.
remote: Counting objects: 100% (15147/15147), done.
remote: Compressing objects: 100% (565/565), done.
remote: Total 310230 (delta 14770), reused 14627 (delta 14582), pack-reused 295083 (from 3)
remote: Enumerating objects: 55, done.
remote: Counting objects: 100% (34/34), done.
remote: Total 55 (delta 33), reused 33 (delta 33), pack-reused 21 (from 1)
==&gt; /usr/bin/sudo /bin/mkdir -p /etc/paths.d
==&gt; /usr/bin/sudo tee /etc/paths.d/homebrew
/opt/homebrew/bin
==&gt; /usr/bin/sudo /usr/sbin/chown root:wheel /etc/paths.d/homebrew
==&gt; /usr/bin/sudo /bin/chmod a+r /etc/paths.d/homebrew
==&gt; Updating Homebrew...
==&gt; Downloading https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:20fa657858e44a4b39171d6e4111f8a9716eb62a78ebbd1491d94f90bb7b830a
############################################################ 100.0%
==&gt; Pouring portable-ruby-3.4.5.arm64_big_sur.bottle.tar.gz
==&gt; Installation successful!

==&gt; Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics
No analytics data has been sent yet (nor will any be during this install run).

==&gt; Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations

==&gt; Next steps:
- Run these commands in your terminal to add Homebrew to your PATH:
    echo &gt;&gt; /Users/xxx/.zprofile
    echo &#39;eval &quot;$(/opt/homebrew/bin/brew shellenv)&quot;&#39; &gt;&gt; /Users/xxx/.zprofile
    eval &quot;$(/opt/homebrew/bin/brew shellenv)&quot;
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh
</code></pre></div>



<h2 class="wp-block-heading">Homebrewのパス設定</h2>



<p class="wp-block-paragraph">　以下のコマンドを実行する</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>export PATH=&quot;$PATH:/opt/homebrew/bin/&quot;</code></pre></div>



<p class="wp-block-paragraph">　パスが通ったかは、以下のコマンドで確認可能。バージョンが返ってくればOK。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>brew --version</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>(base) Mac-Studio ~ % brew --version
Homebrew 4.6.10</code></pre></div>



<h2 class="wp-block-heading">cmakeのインストール</h2>



<p class="wp-block-paragraph">　以下のコマンドを実行する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>brew install wget git cmake</code></pre></div>



<p class="wp-block-paragraph">　実行結果は以下のとおり。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>(base) Mac-Studio ~ % brew install wget git cmake
==&gt; Fetching downloads for: wget, git and cmake
==&gt; Downloading https://ghcr.io/v2/homebrew/core/wget/manifests/1.2
############################################################ 100.0%
==&gt; Downloading https://ghcr.io/v2/homebrew/core/git/manifests/2.51
############################################################ 100.0%
==&gt; Downloading https://ghcr.io/v2/homebrew/core/cmake/manifests/4.
############################################################ 100.0%
==&gt; Fetching dependencies for wget: libunistring, gettext, libidn2, ca-certificates and openssl@3
==&gt; Downloading https://ghcr.io/v2/homebrew/core/libunistring/manif
############################################################ 100.0%
==&gt; Fetching libunistring
==&gt; Downloading https://ghcr.io/v2/homebrew/core/libunistring/blobs
############################################################ 100.0%
==&gt; Downloading https://ghcr.io/v2/homebrew/core/gettext/manifests/
############################################################ 100.0%
==&gt; Fetching gettext
==&gt; Downloading https://ghcr.io/v2/homebrew/core/gettext/blobs/sha2
############################################################ 100.0%
==&gt; Downloading https://ghcr.io/v2/homebrew/core/libidn2/manifests/
############################################################ 100.0%
==&gt; Fetching libidn2
==&gt; Downloading https://ghcr.io/v2/homebrew/core/libidn2/blobs/sha2
############################################################ 100.0%
==&gt; Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/ma
############################################################ 100.0%
==&gt; Fetching ca-certificates
==&gt; Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/bl
############################################################ 100.0%
==&gt; Downloading https://ghcr.io/v2/homebrew/core/openssl/3/manifest
############################################################ 100.0%
==&gt; Fetching openssl@3
==&gt; Downloading https://ghcr.io/v2/homebrew/core/openssl/3/blobs/sh
############################################################ 100.0%
==&gt; Fetching wget
==&gt; Downloading https://ghcr.io/v2/homebrew/core/wget/blobs/sha256:
############################################################ 100.0%
==&gt; Fetching dependencies for git: pcre2
==&gt; Downloading https://ghcr.io/v2/homebrew/core/pcre2/manifests/10
############################################################ 100.0%
==&gt; Fetching pcre2
==&gt; Downloading https://ghcr.io/v2/homebrew/core/pcre2/blobs/sha256
############################################################ 100.0%
==&gt; Fetching git
==&gt; Downloading https://ghcr.io/v2/homebrew/core/git/blobs/sha256:e
############################################################ 100.0%
==&gt; Fetching cmake
==&gt; Downloading https://ghcr.io/v2/homebrew/core/cmake/blobs/sha256
############################################################ 100.0%
==&gt; Installing dependencies for wget: libunistring, gettext, libidn2, ca-certificates and openssl@3
==&gt; Installing wget dependency: libunistring
==&gt; Downloading https://ghcr.io/v2/homebrew/core/libunistring/manif
Already downloaded: /Users/xxx/Library/Caches/Homebrew/downloads/a570da63bc1839c7e217f203abd54d4d873ebd6b99f6e88994d0e79e2ebe987c--libunistring-1.3.bottle_manifest.json
==&gt; Pouring libunistring--1.3.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libunistring/1.3: 59 files, 5.4MB
==&gt; Installing wget dependency: gettext
==&gt; Downloading https://ghcr.io/v2/homebrew/core/gettext/manifests/
Already downloaded: /Users/xxx/Library/Caches/Homebrew/downloads/d28158ffec04fae757cdbeb46750e8e2ed43b7b17ada49d72a5bda2cff4cd6ed--gettext-0.26.bottle_manifest.json
==&gt; Pouring gettext--0.26.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/gettext/0.26: 2,428 files, 28.2MB
==&gt; Installing wget dependency: libidn2
==&gt; Downloading https://ghcr.io/v2/homebrew/core/libidn2/manifests/
Already downloaded: /Users/xxx/Library/Caches/Homebrew/downloads/f30f50fbde4bff9a71de54d684e482d7da3432656d680b97441163c6e5665468--libidn2-2.3.8.bottle_manifest.json
==&gt; Pouring libidn2--2.3.8.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libidn2/2.3.8: 80 files, 929.5KB
==&gt; Installing wget dependency: ca-certificates
==&gt; Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/ma
Already downloaded: /Users/xxx/Library/Caches/Homebrew/downloads/446bcc9fbe916b3769ad3367c5fff981dfdf345e29ffc493f87e48e904d30608--ca-certificates-2025-08-12-2.bottle_manifest.json
==&gt; Pouring ca-certificates--2025-08-12.all.bottle.2.tar.gz
==&gt; Regenerating CA certificate bundle from keychain, this may take
🍺  /opt/homebrew/Cellar/ca-certificates/2025-08-12: 4 files, 232.9KB
==&gt; Installing wget dependency: openssl@3
==&gt; Downloading https://ghcr.io/v2/homebrew/core/openssl/3/manifest
Already downloaded: /Users/xxx/Library/Caches/Homebrew/downloads/e6659abe178bdf49b65451e77f6165a3e07274432f445342092e5ad2a927b23c--openssl@3-3.5.2.bottle_manifest.json
==&gt; Pouring openssl@3--3.5.2.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/openssl@3/3.5.2: 7,563 files, 35.4MB
==&gt; Installing wget
==&gt; Pouring wget--1.25.0.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/wget/1.25.0: 92 files, 4.5MB
==&gt; Running `brew cleanup wget`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
==&gt; Installing git dependency: pcre2
==&gt; Downloading https://ghcr.io/v2/homebrew/core/pcre2/manifests/10
Already downloaded: /Users/xxx/Library/Caches/Homebrew/downloads/476078c344b0d9fa702da6e94d7fe5dd59bb1897d3fcc12d1b52b4bc0de68854--pcre2-10.46.bottle_manifest.json
==&gt; Pouring pcre2--10.46.arm64_sequoia.bottle.tar.gz
🍺  /opt/homebrew/Cellar/pcre2/10.46: 242 files, 6.8MB
==&gt; Pouring git--2.51.0.arm64_sequoia.bottle.tar.gz
==&gt; Caveats
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.
Subversion interoperability (git-svn) is now in the `git-svn` formula.
==&gt; Summary
🍺  /opt/homebrew/Cellar/git/2.51.0: 1,693 files, 55.9MB
==&gt; Running `brew cleanup git`...
==&gt; Pouring cmake--4.1.1.arm64_sequoia.bottle.tar.gz
==&gt; Caveats
To install the CMake documentation, run:
  brew install cmake-docs
==&gt; Summary
🍺  /opt/homebrew/Cellar/cmake/4.1.1: 3,913 files, 58.6MB
==&gt; Running `brew cleanup cmake`...
==&gt; No outdated dependents to upgrade!
==&gt; Caveats
zsh completions and functions have been installed to:
  /opt/homebrew/share/zsh/site-functions
Emacs Lisp files have been installed to:
  /opt/homebrew/share/emacs/site-lisp/cmake
==&gt; git
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.
Subversion interoperability (git-svn) is now in the `git-svn` formula.
==&gt; cmake
To install the CMake documentation, run:
  brew install cmake-docs</code></pre></div>



<h2 class="wp-block-heading">xcodeをインストール</h2>



<p class="wp-block-paragraph">　以下のコマンドを実行する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>xcode-select --install</code></pre></div>



<p class="wp-block-paragraph">　実行結果は以下のとおり。xcodeがインストール済の場合は、以下のメッセージが表示される。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>(base) Mac-Studio ~ % xcode-select --install
xcode-select: note: Command line tools are already installed. Use &quot;Software Update&quot; in System Settings or the softwareupdate command line interface to install updates</code></pre></div>



<h2 class="wp-block-heading">Llama.cppのビルド</h2>



<p class="wp-block-paragraph">　以下のコマンドを実行し、llama.cppのリポジトリをクローンする。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>git clone https://github.com/ggerganov/llama.cpp</code></pre></div>



<p class="wp-block-paragraph">　実行結果は以下のとおり。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>(base) Mac-Studio ~ % git clone https://github.com/ggerganov/llama.cpp
Cloning into &#39;llama.cpp&#39;...
remote: Enumerating objects: 61275, done.
remote: Counting objects: 100% (206/206), done.
remote: Compressing objects: 100% (135/135), done.
remote: Total 61275 (delta 138), reused 71 (delta 71), pack-reused 61069 (from 3)
Receiving objects: 100% (61275/61275), 152.17 MiB | 5.26 MiB/s, done.
Resolving deltas: 100% (44500/44500), done.</code></pre></div>



<p class="wp-block-paragraph">　llama.cppディレクトリに移動し、makeする。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>cd llama.cpp
make</code></pre></div>



<p class="wp-block-paragraph">　実行結果は以下のとおり。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>(base) Mac-Studio ~ % cd llama.cpp
(base) Mac-Studio llama.cpp % make
Makefile:6: *** Build system changed:
 The Makefile build has been replaced by CMake.

 For build instructions see:
 https://github.com/ggml-org/llama.cpp/blob/master/docs/build.md

.  Stop.</code></pre></div>



<h2 class="wp-block-heading">GGUF変換用のPython仮想環境作成</h2>



<p class="wp-block-paragraph">　以下のコマンドを実行し、仮想環境を作成する（環境名は任意で変更OK）。私は「convert2gguf」という名称にした。理由は後述するが、Python3.10とするのがミソ。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>python3.10 -m venv convert2gguf</code></pre></div>



<p class="wp-block-paragraph">　作成した仮想環境をアクティベートする。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>source convert2gguf/bin/activate</code></pre></div>



<p class="wp-block-paragraph">　ターミナルの頭に（仮想環境名）が表示されていれば、アクティベートできている。以下のコマンドを実行し、Pythonバージョンを確認する。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>python --version</code></pre></div>



<p class="wp-block-paragraph">　以下のように、3.10.xと表示されていればOK。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>(convert2gguf) (base) Mac-Studio llama.cpp % python --version            
Python 3.10.8</code></pre></div>



<p class="wp-block-paragraph">　以下のコマンドを実行し、llama.cppのrequirements.txtをpipインストールする。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>pip install -r requirements.txt</code></pre></div>



<p class="wp-block-paragraph">　実行結果は以下のとおり。llama.cppのrequirements.txtをpipインストールできる最新のPythonバージョンは3.10のため、エラーが出る場合はPythonの仮想環境を見直すこと。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>(convert2gguf) (base) Mac-Studio llama.cpp % pip install -r requirements.txt   
Looking in indexes: https://pypi.org/simple, https://download.pytorch.org/whl/cpu, https://download.pytorch.org/whl/nightly, https://download.pytorch.org/whl/cpu, https://download.pytorch.org/whl/nightly, https://download.pytorch.org/whl/cpu, https://download.pytorch.org/whl/nightly
Ignoring torch: markers &#39;platform_machine == &quot;s390x&quot;&#39; don&#39;t match your environment
Ignoring torch: markers &#39;platform_machine == &quot;s390x&quot;&#39; don&#39;t match your environment
Collecting numpy~=1.26.4
  Downloading https://download.pytorch.org/whl/nightly/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl (14.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.0/14.0 MB 10.8 MB/s eta 0:00:00
Collecting sentencepiece~=0.2.0
  Downloading https://download.pytorch.org/whl/nightly/sentencepiece-0.2.1-cp310-cp310-macosx_11_0_arm64.whl (1.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 11.0 MB/s eta 0:00:00
Collecting transformers&lt;5.0.0,&gt;=4.45.1
  Downloading transformers-4.56.1-py3-none-any.whl (11.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 4.5 MB/s eta 0:00:00
Collecting gguf&gt;=0.1.0
  Downloading gguf-0.17.1-py3-none-any.whl (96 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.2/96.2 kB 6.1 MB/s eta 0:00:00
Collecting protobuf&lt;5.0.0,&gt;=4.21.0
  Downloading protobuf-4.25.8-cp37-abi3-macosx_10_9_universal2.whl (394 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 394.5/394.5 kB 7.1 MB/s eta 0:00:00
Collecting mistral-common&gt;=1.8.3
  Downloading mistral_common-1.8.4-py3-none-any.whl (6.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.5/6.5 MB 8.6 MB/s eta 0:00:00
Collecting torch~=2.4.0
  Downloading https://download.pytorch.org/whl/cpu/torch-2.4.1-cp310-none-macosx_11_0_arm64.whl (62.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.1/62.1 MB 10.4 MB/s eta 0:00:00
Collecting aiohttp~=3.9.3
  Downloading https://download.pytorch.org/whl/nightly/aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl (389 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━ 389.9/389.9 kB 618.1 kB/s eta 0:00:00
Collecting pytest~=8.3.3
  Downloading pytest-8.3.5-py3-none-any.whl (343 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 343.6/343.6 kB 3.6 MB/s eta 0:00:00
Collecting huggingface_hub~=0.23.2
  Downloading huggingface_hub-0.23.5-py3-none-any.whl (402 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 402.8/402.8 kB 1.3 MB/s eta 0:00:00
Collecting matplotlib~=3.10.0
  Downloading matplotlib-3.10.6-cp310-cp310-macosx_11_0_arm64.whl (8.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.1/8.1 MB 5.6 MB/s eta 0:00:00
Collecting openai~=1.55.3
  Downloading openai-1.55.3-py3-none-any.whl (389 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 389.6/389.6 kB 6.5 MB/s eta 0:00:00
Collecting pandas~=2.2.3
  Downloading https://download.pytorch.org/whl/nightly/pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl (11.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 10.0 MB/s eta 0:00:00
Collecting prometheus-client~=0.20.0
  Downloading prometheus_client-0.20.0-py3-none-any.whl (54 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.5/54.5 kB 4.3 MB/s eta 0:00:00
Collecting requests~=2.32.3
  Downloading requests-2.32.5-py3-none-any.whl (64 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.7/64.7 kB 5.5 MB/s eta 0:00:00
Collecting wget~=3.2
  Downloading wget-3.2.zip (10 kB)
  Preparing metadata (setup.py) ... done
Collecting typer~=0.15.1
  Downloading typer-0.15.4-py3-none-any.whl (45 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.3/45.3 kB 4.8 MB/s eta 0:00:00
Collecting seaborn~=0.13.2
  Downloading seaborn-0.13.2-py3-none-any.whl (294 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 294.9/294.9 kB 9.2 MB/s eta 0:00:00
Collecting pyyaml&gt;=5.1
  Downloading https://download.pytorch.org/whl/nightly/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl (171 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 171.8/171.8 kB 8.5 MB/s eta 0:00:00
Collecting packaging&gt;=20.0
  Downloading packaging-25.0-py3-none-any.whl (66 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.5/66.5 kB 5.8 MB/s eta 0:00:00
Collecting filelock
  Downloading https://download.pytorch.org/whl/nightly/filelock-3.19.1-py3-none-any.whl (15 kB)
Collecting transformers&lt;5.0.0,&gt;=4.45.1
  Downloading transformers-4.56.0-py3-none-any.whl (11.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 8.6 MB/s eta 0:00:00
  Downloading transformers-4.55.4-py3-none-any.whl (11.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 8.5 MB/s eta 0:00:00
  Downloading transformers-4.55.3-py3-none-any.whl (11.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 10.1 MB/s eta 0:00:00
  Downloading transformers-4.55.2-py3-none-any.whl (11.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 11.5 MB/s eta 0:00:00
  Downloading transformers-4.55.1-py3-none-any.whl (11.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 5.1 MB/s eta 0:00:00
  Downloading transformers-4.55.0-py3-none-any.whl (11.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 11.4 MB/s eta 0:00:00
  Downloading transformers-4.54.1-py3-none-any.whl (11.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.2/11.2 MB 9.9 MB/s eta 0:00:00
  Downloading transformers-4.54.0-py3-none-any.whl (11.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.2/11.2 MB 10.9 MB/s eta 0:00:00
  Downloading transformers-4.53.3-py3-none-any.whl (10.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 11.3 MB/s eta 0:00:00
  Downloading transformers-4.53.2-py3-none-any.whl (10.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 10.1 MB/s eta 0:00:00
  Downloading transformers-4.53.1-py3-none-any.whl (10.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 6.5 MB/s eta 0:00:00
  Downloading transformers-4.53.0-py3-none-any.whl (10.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 9.7 MB/s eta 0:00:00
  Downloading transformers-4.52.4-py3-none-any.whl (10.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.5/10.5 MB 11.1 MB/s eta 0:00:00
  Downloading transformers-4.52.3-py3-none-any.whl (10.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.5/10.5 MB 11.5 MB/s eta 0:00:00
  Downloading transformers-4.52.2-py3-none-any.whl (10.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.5/10.5 MB 11.1 MB/s eta 0:00:00
  Downloading transformers-4.52.1-py3-none-any.whl (10.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.5/10.5 MB 11.5 MB/s eta 0:00:00
  Downloading transformers-4.51.3-py3-none-any.whl (10.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 10.5 MB/s eta 0:00:00
  Downloading transformers-4.51.2-py3-none-any.whl (10.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 9.4 MB/s eta 0:00:00
  Downloading transformers-4.51.1-py3-none-any.whl (10.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 10.4 MB/s eta 0:00:00
  Downloading transformers-4.51.0-py3-none-any.whl (10.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 11.0 MB/s eta 0:00:00
  Downloading transformers-4.50.3-py3-none-any.whl (10.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2/10.2 MB 10.5 MB/s eta 0:00:00
  Downloading transformers-4.50.2-py3-none-any.whl (10.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2/10.2 MB 5.2 MB/s eta 0:00:00
  Downloading transformers-4.50.1-py3-none-any.whl (10.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2/10.2 MB 6.7 MB/s eta 0:00:00
  Downloading transformers-4.50.0-py3-none-any.whl (10.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2/10.2 MB 10.7 MB/s eta 0:00:00
  Downloading transformers-4.49.0-py3-none-any.whl (10.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.0/10.0 MB 9.8 MB/s eta 0:00:00
  Downloading transformers-4.48.3-py3-none-any.whl (9.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.7/9.7 MB 11.5 MB/s eta 0:00:00
Collecting safetensors&gt;=0.4.1
  Downloading https://download.pytorch.org/whl/nightly/safetensors-0.6.2-cp38-abi3-macosx_11_0_arm64.whl (432 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━ 432.2/432.2 kB 10.2 MB/s eta 0:00:00
Collecting transformers&lt;5.0.0,&gt;=4.45.1
  Downloading transformers-4.48.2-py3-none-any.whl (9.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.7/9.7 MB 10.3 MB/s eta 0:00:00
  Downloading transformers-4.48.1-py3-none-any.whl (9.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.7/9.7 MB 8.7 MB/s eta 0:00:00
  Downloading transformers-4.48.0-py3-none-any.whl (9.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.7/9.7 MB 4.0 MB/s eta 0:00:00
  Downloading transformers-4.47.1-py3-none-any.whl (10.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.1/10.1 MB 5.5 MB/s eta 0:00:00
  Downloading transformers-4.47.0-py3-none-any.whl (10.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.1/10.1 MB 9.3 MB/s eta 0:00:00
  Downloading transformers-4.46.3-py3-none-any.whl (10.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.0/10.0 MB 8.1 MB/s eta 0:00:00
Collecting tokenizers&lt;0.21,&gt;=0.20
  Downloading tokenizers-0.20.3-cp310-cp310-macosx_11_0_arm64.whl (2.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6/2.6 MB 8.6 MB/s eta 0:00:00
Collecting tqdm&gt;=4.27
  Downloading https://download.pytorch.org/whl/nightly/tqdm-4.67.1-py3-none-any.whl (78 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.5/78.5 kB 6.4 MB/s eta 0:00:00
Collecting regex!=2019.12.17
  Downloading regex-2025.9.1-cp310-cp310-macosx_11_0_arm64.whl (286 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 286.6/286.6 kB 8.9 MB/s eta 0:00:00
Collecting jsonschema&gt;=4.21.1
  Downloading jsonschema-4.25.1-py3-none-any.whl (90 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 90.0/90.0 kB 7.9 MB/s eta 0:00:00
Collecting pydantic&lt;3.0,&gt;=2.7
  Downloading pydantic-2.11.7-py3-none-any.whl (444 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━ 444.8/444.8 kB 10.3 MB/s eta 0:00:00
Collecting tiktoken&gt;=0.7.0
  Downloading https://download.pytorch.org/whl/nightly/tiktoken-0.11.0-cp310-cp310-macosx_11_0_arm64.whl (999 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 999.2/999.2 kB 1.3 MB/s eta 0:00:00
Collecting pydantic-extra-types[pycountry]&gt;=2.10.5
  Downloading pydantic_extra_types-2.10.5-py3-none-any.whl (38 kB)
Collecting pillow&gt;=10.3.0
  Downloading https://download.pytorch.org/whl/nightly/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl (4.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.7/4.7 MB 11.3 MB/s eta 0:00:00
Collecting typing-extensions&gt;=4.11.0
  Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 44.6/44.6 kB 4.7 MB/s eta 0:00:00
Collecting sympy
  Downloading https://download.pytorch.org/whl/nightly/sympy-1.14.0-py3-none-any.whl (6.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.3/6.3 MB 8.1 MB/s eta 0:00:00
Collecting fsspec
  Downloading fsspec-2025.9.0-py3-none-any.whl (199 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 199.3/199.3 kB 8.9 MB/s eta 0:00:00
Collecting jinja2
  Downloading https://download.pytorch.org/whl/nightly/jinja2-3.1.6-py3-none-any.whl (134 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━ 134.9/134.9 kB 10.5 MB/s eta 0:00:00
Collecting networkx
  Downloading https://download.pytorch.org/whl/nightly/networkx-3.5-py3-none-any.whl (2.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 10.3 MB/s eta 0:00:00
Collecting multidict&lt;7.0,&gt;=4.5
  Downloading https://download.pytorch.org/whl/nightly/multidict-6.6.4-cp310-cp310-macosx_11_0_arm64.whl (44 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 44.6/44.6 kB 5.7 MB/s eta 0:00:00
Collecting yarl&lt;2.0,&gt;=1.0
  Downloading https://download.pytorch.org/whl/nightly/yarl-1.20.1-cp310-cp310-macosx_11_0_arm64.whl (89 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 89.3/89.3 kB 4.4 MB/s eta 0:00:00
Collecting attrs&gt;=17.3.0
  Downloading https://download.pytorch.org/whl/nightly/attrs-25.3.0-py3-none-any.whl (63 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.8/63.8 kB 5.3 MB/s eta 0:00:00
Collecting aiosignal&gt;=1.1.2
  Downloading https://download.pytorch.org/whl/nightly/aiosignal-1.4.0-py3-none-any.whl (7.5 kB)
Collecting frozenlist&gt;=1.1.1
  Downloading https://download.pytorch.org/whl/nightly/frozenlist-1.7.0-cp310-cp310-macosx_11_0_arm64.whl (46 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.8/46.8 kB 4.7 MB/s eta 0:00:00
Collecting async-timeout&lt;5.0,&gt;=4.0
  Downloading https://download.pytorch.org/whl/nightly/async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Collecting pluggy&lt;2,&gt;=1.5
  Downloading pluggy-1.6.0-py3-none-any.whl (20 kB)
Collecting iniconfig
  Downloading iniconfig-2.1.0-py3-none-any.whl (6.0 kB)
Collecting exceptiongroup&gt;=1.0.0rc8
  Downloading exceptiongroup-1.3.0-py3-none-any.whl (16 kB)
Collecting tomli&gt;=1
  Downloading tomli-2.2.1-py3-none-any.whl (14 kB)
Collecting kiwisolver&gt;=1.3.1
  Downloading kiwisolver-1.4.9-cp310-cp310-macosx_11_0_arm64.whl (65 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 65.3/65.3 kB 5.5 MB/s eta 0:00:00
Collecting cycler&gt;=0.10
  Downloading https://download.pytorch.org/whl/nightly/cycler-0.12.1-py3-none-any.whl (8.3 kB)
Collecting pyparsing&gt;=2.3.1
  Downloading pyparsing-3.2.3-py3-none-any.whl (111 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 111.1/111.1 kB 8.5 MB/s eta 0:00:00
Collecting python-dateutil&gt;=2.7
  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 10.6 MB/s eta 0:00:00
Collecting fonttools&gt;=4.22.0
  Downloading fonttools-4.59.2-cp310-cp310-macosx_10_9_universal2.whl (2.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 MB 11.3 MB/s eta 0:00:00
Collecting contourpy&gt;=1.0.1
  Downloading contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl (253 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━ 253.4/253.4 kB 10.1 MB/s eta 0:00:00
Collecting jiter&lt;1,&gt;=0.4.0
  Downloading jiter-0.10.0-cp310-cp310-macosx_11_0_arm64.whl (322 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 322.8/322.8 kB 9.3 MB/s eta 0:00:00
Collecting httpx&lt;1,&gt;=0.23.0
  Downloading httpx-0.28.1-py3-none-any.whl (73 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 73.5/73.5 kB 6.6 MB/s eta 0:00:00
Collecting distro&lt;2,&gt;=1.7.0
  Downloading distro-1.9.0-py3-none-any.whl (20 kB)
Collecting anyio&lt;5,&gt;=3.5.0
  Downloading anyio-4.10.0-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.2/107.2 kB 8.9 MB/s eta 0:00:00
Collecting sniffio
  Downloading sniffio-1.3.1-py3-none-any.whl (10 kB)
Collecting pytz&gt;=2020.1
  Downloading https://download.pytorch.org/whl/nightly/pytz-2025.2-py2.py3-none-any.whl (509 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━ 509.2/509.2 kB 10.7 MB/s eta 0:00:00
Collecting tzdata&gt;=2022.7
  Downloading https://download.pytorch.org/whl/nightly/tzdata-2025.2-py2.py3-none-any.whl (347 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━ 347.8/347.8 kB 10.6 MB/s eta 0:00:00
Collecting charset_normalizer&lt;4,&gt;=2
  Downloading https://download.pytorch.org/whl/nightly/charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl (207 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.7/207.7 kB 9.3 MB/s eta 0:00:00
Collecting certifi&gt;=2017.4.17
  Downloading https://download.pytorch.org/whl/nightly/certifi-2025.8.3-py3-none-any.whl (161 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 161.2/161.2 kB 5.7 MB/s eta 0:00:00
Collecting idna&lt;4,&gt;=2.5
  Downloading https://download.pytorch.org/whl/nightly/idna-3.10-py3-none-any.whl (70 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.4/70.4 kB 6.0 MB/s eta 0:00:00
Collecting urllib3&lt;3,&gt;=1.21.1
  Downloading https://download.pytorch.org/whl/nightly/urllib3-2.5.0-py3-none-any.whl (129 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 129.8/129.8 kB 7.6 MB/s eta 0:00:00
Collecting shellingham&gt;=1.3.0
  Downloading shellingham-1.5.4-py2.py3-none-any.whl (9.8 kB)
Collecting rich&gt;=10.11.0
  Downloading rich-14.1.0-py3-none-any.whl (243 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 243.4/243.4 kB 8.7 MB/s eta 0:00:00
Collecting click&lt;8.2,&gt;=8.0.0
  Downloading click-8.1.8-py3-none-any.whl (98 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.2/98.2 kB 7.5 MB/s eta 0:00:00
Collecting httpcore==1.*
  Downloading httpcore-1.0.9-py3-none-any.whl (78 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.8/78.8 kB 8.1 MB/s eta 0:00:00
Collecting h11&gt;=0.16
  Downloading h11-0.16.0-py3-none-any.whl (37 kB)
Collecting referencing&gt;=0.28.4
  Downloading referencing-0.36.2-py3-none-any.whl (26 kB)
Collecting rpds-py&gt;=0.7.1
  Downloading rpds_py-0.27.1-cp310-cp310-macosx_11_0_arm64.whl (353 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 353.5/353.5 kB 9.9 MB/s eta 0:00:00
Collecting jsonschema-specifications&gt;=2023.03.6
  Downloading jsonschema_specifications-2025.9.1-py3-none-any.whl (18 kB)
Collecting pydantic-core==2.33.2
  Downloading pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl (1.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.9/1.9 MB 10.8 MB/s eta 0:00:00
Collecting annotated-types&gt;=0.6.0
  Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB)
Collecting typing-inspection&gt;=0.4.0
  Downloading typing_inspection-0.4.1-py3-none-any.whl (14 kB)
Collecting pycountry&gt;=23
  Downloading pycountry-24.6.1-py3-none-any.whl (6.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.3/6.3 MB 11.1 MB/s eta 0:00:00
Collecting six&gt;=1.5
  Downloading https://download.pytorch.org/whl/nightly/six-1.17.0-py2.py3-none-any.whl (11 kB)
Collecting markdown-it-py&gt;=2.2.0
  Downloading markdown_it_py-4.0.0-py3-none-any.whl (87 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.3/87.3 kB 9.2 MB/s eta 0:00:00
Collecting pygments&lt;3.0.0,&gt;=2.13.0
  Downloading pygments-2.19.2-py3-none-any.whl (1.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 10.5 MB/s eta 0:00:00
Collecting propcache&gt;=0.2.1
  Downloading propcache-0.3.2-cp310-cp310-macosx_11_0_arm64.whl (43 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.0/43.0 kB 4.7 MB/s eta 0:00:00
Collecting MarkupSafe&gt;=2.0
  Downloading https://download.pytorch.org/whl/nightly/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl (12 kB)
Collecting networkx
  Downloading https://download.pytorch.org/whl/nightly/networkx-3.4.2-py3-none-any.whl (1.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 5.9 MB/s eta 0:00:00
Collecting mpmath&lt;1.4,&gt;=1.1.0
  Downloading https://download.pytorch.org/whl/nightly/mpmath-1.3.0-py3-none-any.whl (536 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 9.5 MB/s eta 0:00:00
Collecting mdurl~=0.1
  Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Using legacy &#39;setup.py install&#39; for wget, since package &#39;wheel&#39; is not installed.
Installing collected packages: wget, pytz, mpmath, urllib3, tzdata, typing-extensions, tqdm, tomli, sympy, sniffio, six, shellingham, sentencepiece, safetensors, rpds-py, regex, pyyaml, pyparsing, pygments, pycountry, protobuf, propcache, prometheus-client, pluggy, pillow, packaging, numpy, networkx, mdurl, MarkupSafe, kiwisolver, jiter, iniconfig, idna, h11, fsspec, frozenlist, fonttools, filelock, distro, cycler, click, charset_normalizer, certifi, attrs, async-timeout, annotated-types, typing-inspection, requests, referencing, python-dateutil, pydantic-core, multidict, markdown-it-py, jinja2, httpcore, gguf, exceptiongroup, contourpy, aiosignal, yarl, torch, tiktoken, rich, pytest, pydantic, pandas, matplotlib, jsonschema-specifications, huggingface_hub, anyio, typer, tokenizers, seaborn, pydantic-extra-types, jsonschema, httpx, aiohttp, transformers, openai, mistral-common
  Running setup.py install for wget ... done
Successfully installed MarkupSafe-3.0.2 aiohttp-3.9.5 aiosignal-1.4.0 annotated-types-0.7.0 anyio-4.10.0 async-timeout-4.0.3 attrs-25.3.0 certifi-2025.8.3 charset_normalizer-3.4.3 click-8.1.8 contourpy-1.3.2 cycler-0.12.1 distro-1.9.0 exceptiongroup-1.3.0 filelock-3.19.1 fonttools-4.59.2 frozenlist-1.7.0 fsspec-2025.9.0 gguf-0.17.1 h11-0.16.0 httpcore-1.0.9 httpx-0.28.1 huggingface_hub-0.23.5 idna-3.10 iniconfig-2.1.0 jinja2-3.1.6 jiter-0.10.0 jsonschema-4.25.1 jsonschema-specifications-2025.9.1 kiwisolver-1.4.9 markdown-it-py-4.0.0 matplotlib-3.10.6 mdurl-0.1.2 mistral-common-1.8.4 mpmath-1.3.0 multidict-6.6.4 networkx-3.4.2 numpy-1.26.4 openai-1.55.3 packaging-25.0 pandas-2.2.3 pillow-11.3.0 pluggy-1.6.0 prometheus-client-0.20.0 propcache-0.3.2 protobuf-4.25.8 pycountry-24.6.1 pydantic-2.11.7 pydantic-core-2.33.2 pydantic-extra-types-2.10.5 pygments-2.19.2 pyparsing-3.2.3 pytest-8.3.5 python-dateutil-2.9.0.post0 pytz-2025.2 pyyaml-6.0.2 referencing-0.36.2 regex-2025.9.1 requests-2.32.5 rich-14.1.0 rpds-py-0.27.1 safetensors-0.6.2 seaborn-0.13.2 sentencepiece-0.2.1 shellingham-1.5.4 six-1.17.0 sniffio-1.3.1 sympy-1.14.0 tiktoken-0.11.0 tokenizers-0.20.3 tomli-2.2.1 torch-2.4.1 tqdm-4.67.1 transformers-4.46.3 typer-0.15.4 typing-extensions-4.15.0 typing-inspection-0.4.1 tzdata-2025.2 urllib3-2.5.0 wget-3.2 yarl-1.20.1
WARNING: There was an error checking the latest version of pip.</code></pre></div>



<p class="wp-block-paragraph">　pip listは以下のとおり（実行しなくてもOK）。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>(convert2gguf) (base) Mac-Studio llama.cpp % pip list --o
Package           Version Latest  Type
----------------- ------- ------- -----
aiohttp           3.9.5   3.12.15 wheel
async-timeout     4.0.3   5.0.1   wheel
click             8.1.8   8.2.1   wheel
huggingface-hub   0.23.5  0.34.4  wheel
numpy             1.26.4  2.2.6   wheel
openai            1.55.3  1.106.1 wheel
pandas            2.2.3   2.3.2   wheel
pip               22.2.2  25.2    wheel
prometheus_client 0.20.0  0.22.1  wheel
protobuf          4.25.8  6.32.0  wheel
pydantic_core     2.33.2  2.39.0  wheel
pytest            8.3.5   8.4.2   wheel
setuptools        63.2.0  80.9.0  wheel
tokenizers        0.20.3  0.22.0  wheel
torch             2.4.1   2.8.0   wheel
transformers      4.46.3  4.56.1  wheel
typer             0.15.4  0.17.4  wheel
WARNING: There was an error checking the latest version of pip.
</code></pre></div>



<h2 class="wp-block-heading">Safetensors形式のモデルをGGUFに変換</h2>



<p class="wp-block-paragraph">　いよいよ本題のGGUFへの変換を行います。以下のコマンドを実行すると、変換が行われます。</p>



<p class="wp-block-paragraph">　今回はHuggingfaceに掲載されている、「RakutenAI-7B」を使用します。量子化ビットはbf16にします。</p>



<p class="wp-block-paragraph">　&#8211;outtypeの後ろでGGUFの変換サイズを指定することができます。詳細は以下のとおり。下に行くほどモデルの質が劣化するが、メモリ消費量は減り、トークン生成速度は速くなる傾向にある。まぁ、頓珍漢な回答も出やすくなるので注意。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>パラメータ</th><th><strong>量子化ビット</strong></th><th><strong>7Bモデルを変換した際のファイルサイズ目安</strong></th><th>備考</th></tr></thead><tbody><tr><td>f32</td><td>32bit</td><td>約26GB</td><td>高品質だが、RAMを大量に消費する。また、トークン生成速度も遅い。</td></tr><tr><td>f16</td><td>16bit</td><td>約13GB</td><td>f32程ではないが、高品質。メモリ等のリソースは消費する。</td></tr><tr><td>bf16</td><td>16bit(bfloat16)</td><td>約13GB</td><td>f16と同様だが、bfloat16に対応したデバイスでは、積和演算が高速。</td></tr><tr><td>q8_0</td><td>8bit</td><td>約7GB</td><td>8bit=1byte量子化。メモリ消費量とトークン生成速度のバランスがいいと思う。</td></tr><tr><td>tq2_0</td><td>true 2-bit ternary-plus 量子化（2.7bit）</td><td>約3GB</td><td>4bit未満に量子化。メモリ消費量が大幅に減る。</td></tr><tr><td>tq1_0</td><td>1.69 bit</td><td>約2GB</td><td>メモリ消費量が一番小さい。が、特に長文の回答を生成した際に支離滅裂な文を生成しやすくなる。</td></tr><tr><td>auto</td><td>&#8211;</td><td>変化なし</td><td>既存のGGUFファイルを再生成する時に使ったりする。よって、モデルサイズ等は変わらない。</td></tr></tbody></table></figure>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>python convert_hf_to_gguf.py &quot;Safetensors形式のモデルが格納されたフォルダのパス&quot; --outfile &quot;GGUFファイル出力先のフォルダ/RakutenAI-7B-instruct_f16.gguf&quot; --outtype bf16</code></pre></div>



<p class="wp-block-paragraph">　実行結果は以下のとおり。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>(convert2gguf) (base) Mac-Studio llama.cpp % python convert_hf_to_gguf.py &quot;Safetensors形式のモデルが格納されたフォルダのパス&quot; --outfile &quot;GGUFファイル出力先のフォルダ/RakutenAI-7B-instruct_f16.gguf&quot; --outtype bf16
INFO:hf-to-gguf:Loading model: RakutenAI-7B-instruct
INFO:hf-to-gguf:Model architecture: MistralForCausalLM
INFO:gguf.gguf_writer:gguf: This GGUF file is for Little Endian only
INFO:hf-to-gguf:Exporting model...
INFO:hf-to-gguf:gguf: loading model weight map from &#39;model.safetensors.index.json&#39;
INFO:hf-to-gguf:gguf: loading model part &#39;model-00001-of-00003.safetensors&#39;
INFO:hf-to-gguf:token_embd.weight,           torch.bfloat16 --&gt; F16, shape = {4096, 48000}
INFO:hf-to-gguf:blk.0.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.0.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.0.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.0.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.0.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.0.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.0.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.0.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.0.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.1.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.1.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.1.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.1.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.1.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.1.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.1.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.1.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.1.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.10.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.10.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.10.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.10.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.10.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.2.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.2.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.2.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.2.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.2.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.2.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.2.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.2.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.2.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.3.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.3.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.3.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.3.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.3.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.3.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.3.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.3.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.3.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.4.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.4.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.4.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.4.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.4.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.4.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.4.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.4.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.4.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.5.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.5.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.5.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.5.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.5.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.5.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.5.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.5.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.5.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.6.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.6.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.6.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.6.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.6.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.6.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.6.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.6.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.6.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.7.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.7.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.7.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.7.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.7.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.7.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.7.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.7.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.7.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.8.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.8.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.8.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.8.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.8.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.8.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.8.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.8.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.8.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.9.attn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.9.ffn_down.weight,       torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.9.ffn_gate.weight,       torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.9.ffn_up.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.9.ffn_norm.weight,       torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.9.attn_k.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.9.attn_output.weight,    torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.9.attn_q.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.9.attn_v.weight,         torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:gguf: loading model part &#39;model-00002-of-00003.safetensors&#39;
INFO:hf-to-gguf:blk.10.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.10.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.10.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.10.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.11.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.11.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.11.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.11.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.11.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.11.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.11.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.11.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.11.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.12.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.12.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.12.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.12.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.12.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.12.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.12.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.12.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.12.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.13.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.13.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.13.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.13.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.13.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.13.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.13.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.13.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.13.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.14.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.14.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.14.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.14.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.14.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.14.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.14.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.14.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.14.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.15.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.15.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.15.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.15.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.15.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.15.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.15.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.15.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.15.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.16.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.16.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.16.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.16.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.16.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.16.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.16.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.16.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.16.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.17.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.17.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.17.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.17.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.17.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.17.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.17.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.17.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.17.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.18.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.18.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.18.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.18.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.18.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.18.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.18.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.18.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.18.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.19.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.19.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.19.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.19.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.19.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.19.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.19.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.19.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.19.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.20.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.20.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.20.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.20.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.20.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.20.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.20.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.20.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.20.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.21.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.21.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.21.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.21.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.21.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.21.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:gguf: loading model part &#39;model-00003-of-00003.safetensors&#39;
INFO:hf-to-gguf:output.weight,               torch.bfloat16 --&gt; F16, shape = {4096, 48000}
INFO:hf-to-gguf:blk.21.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.21.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.21.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.22.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.22.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.22.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.22.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.22.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.22.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.22.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.22.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.22.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.23.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.23.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.23.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.23.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.23.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.23.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.23.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.23.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.23.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.24.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.24.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.24.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.24.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.24.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.24.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.24.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.24.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.24.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.25.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.25.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.25.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.25.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.25.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.25.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.25.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.25.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.25.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.26.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.26.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.26.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.26.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.26.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.26.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.26.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.26.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.26.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.27.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.27.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.27.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.27.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.27.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.27.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.27.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.27.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.27.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.28.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.28.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.28.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.28.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.28.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.28.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.28.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.28.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.28.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.29.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.29.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.29.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.29.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.29.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.29.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.29.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.29.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.29.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.30.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.30.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.30.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.30.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.30.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.30.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.30.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.30.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.30.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.31.attn_norm.weight,     torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.31.ffn_down.weight,      torch.bfloat16 --&gt; F16, shape = {14336, 4096}
INFO:hf-to-gguf:blk.31.ffn_gate.weight,      torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.31.ffn_up.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 14336}
INFO:hf-to-gguf:blk.31.ffn_norm.weight,      torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:blk.31.attn_k.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:blk.31.attn_output.weight,   torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.31.attn_q.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 4096}
INFO:hf-to-gguf:blk.31.attn_v.weight,        torch.bfloat16 --&gt; F16, shape = {4096, 1024}
INFO:hf-to-gguf:output_norm.weight,          torch.bfloat16 --&gt; F32, shape = {4096}
INFO:hf-to-gguf:Set meta model
INFO:hf-to-gguf:Set model parameters
INFO:hf-to-gguf:gguf: context length = 32768
INFO:hf-to-gguf:gguf: embedding length = 4096
INFO:hf-to-gguf:gguf: feed forward length = 14336
INFO:hf-to-gguf:gguf: head count = 32
INFO:hf-to-gguf:gguf: key-value head count = 8
INFO:hf-to-gguf:gguf: rope theta = 10000.0
INFO:hf-to-gguf:gguf: rms norm epsilon = 1e-05
INFO:hf-to-gguf:gguf: file type = 1
INFO:hf-to-gguf:Set model quantization version
INFO:hf-to-gguf:Set model tokenizer
WARNING:gguf.vocab:Unknown separator token &#39;&lt;s&gt;&#39; in TemplateProcessing&lt;pair&gt;
INFO:gguf.vocab:Setting special token type bos to 1
INFO:gguf.vocab:Setting special token type eos to 2
INFO:gguf.vocab:Setting special token type unk to 0
INFO:gguf.vocab:Setting special token type pad to 2
INFO:gguf.vocab:Setting add_bos_token to True
INFO:gguf.vocab:Setting add_sep_token to False
INFO:gguf.vocab:Setting add_eos_token to False
INFO:gguf.gguf_writer:Writing the following files:
INFO:gguf.gguf_writer:/GGUFファイル出力先のフォルダ/RakutenAI-7B-instruct_f16.gguf: n_tensors = 291, total_size = 14.7G
Writing: 100%|█████████████████████████████████████████████████████████████████████████████████████████| 14.7G/14.7G [00:50&lt;00:00, 293Mbyte/s]
INFO:hf-to-gguf:Model successfully exported to /GGUFファイル出力先のフォルダ/RakutenAI-7B-instruct/RakutenAI-7B-instruct_f16.gguf</code></pre></div>



<p class="wp-block-paragraph"></p><p>The post <a href="https://toybox.uranos8685.mydns.jp/2025/09/20/mac%e3%81%a7safetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92gguf%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/">MacでSafetensors形式のモデルをGGUFに変換する方法</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2025/09/20/mac%e3%81%a7safetensors%e5%bd%a2%e5%bc%8f%e3%81%ae%e3%83%a2%e3%83%87%e3%83%ab%e3%82%92gguf%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">299</post-id>	</item>
		<item>
		<title>Mac Studio M4 Maxを買ってしまったお話</title>
		<link>https://toybox.uranos8685.mydns.jp/2025/09/08/mac-studio-m4max%e3%82%92%e8%b2%b7%e3%81%a3%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e3%81%8a%e8%a9%b1/</link>
					<comments>https://toybox.uranos8685.mydns.jp/2025/09/08/mac-studio-m4max%e3%82%92%e8%b2%b7%e3%81%a3%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e3%81%8a%e8%a9%b1/#respond</comments>
		
		<dc:creator><![CDATA[Uranos8685]]></dc:creator>
		<pubDate>Mon, 08 Sep 2025 14:21:35 +0000</pubDate>
				<category><![CDATA[テクノロジー]]></category>
		<guid isPermaLink="false">https://toybox.uranos8685.mydns.jp/?p=291</guid>

					<description><![CDATA[<p>　私は昔からWindows一筋でやってきていました。ホームビデオを見返すと、３歳の頃からWindowsを使ってお絵描きしていたレベルです。 　現在使っている自作Windows機の構成は以下のとおりです。 　ローカルでLL [&#8230;]</p>
<p>The post <a href="https://toybox.uranos8685.mydns.jp/2025/09/08/mac-studio-m4max%e3%82%92%e8%b2%b7%e3%81%a3%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e3%81%8a%e8%a9%b1/">Mac Studio M4 Maxを買ってしまったお話</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">　私は昔からWindows一筋でやってきていました。ホームビデオを見返すと、３歳の頃からWindowsを使ってお絵描きしていたレベルです。</p>



<p class="wp-block-paragraph">　現在使っている自作Windows機の構成は以下のとおりです。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p class="wp-block-paragraph">CPU：intel Corei5-13600K</p>



<p class="wp-block-paragraph">マザーボード：Z690-F GAMING</p>



<p class="wp-block-paragraph">GPU：RTX3080(10GB)</p>



<p class="wp-block-paragraph">ストレージ：たくさん</p>
</div>



<p class="wp-block-paragraph">　ローカルでLLMを回すとなるとGPUのメモリが大切になってきます。gpt-oss-20bを動かそうとすると、16GBは消費します。私のGPUは10GBしかありませんが一応動きはします。ただ、溢れた分はRAMに逃したりなんとかしているようで、かなりレスポンス（トークン生成）が遅い状況でした。</p>



<p class="wp-block-paragraph">　これを改善する方法は２つあり、１つはGPUを載せ替えることです。狙うならメモリ24GBを搭載するRTX5070Ti SUPERですが、未発売かつ御祝儀価格がいくらになるのか分かりません。もう１つの方法が、Macを買うでした。</p>



<p class="wp-block-paragraph">　Macはユニファイドメモリを搭載しており、LLMをこのメモリで高速に回すことができます。ちょうど、Windowsを仮想マシンで起動しっぱなしにしておけるミニPCも欲しかったので、Mac mini M4の仕様を調べてみたところ、ユニファイドメモリはデフォで16GB(¥94,800)、課金して32GB(¥154,800)でした。また、LLMはメモリ帯域も大事なのですが、Mac miniは120GB/sです。LLMを動作させるには問題ありませんが、仮想デスクトップも同時起動となると、32GBでもやや心許ない。</p>



<p class="wp-block-paragraph">　ついでにMac Studio M4 Maxも調べたところ、ユニファイドメモリ36GB(¥328,800)、メモリ帯域は546GB/sといい感じ。私がApple Storeオンラインショップを覗いた際には、Mac Studio M4 Maxの整備済品が¥278,800で売られていました。これしかないと思い、整備済品をポチってしまいました。</p>



<p class="wp-block-paragraph">　出費は大きかったですが、gpt-ossもサクサク動作したので大満足でした。１つ誤算だったのは、M4チップはARM系なのでWindows仮想マシンもARM系のものがインストールされます。ギャルゲーやらなんやらを出先のスマホでプレイするための仮想環境だったのですが、互換性の問題で動作しないのがチラホラ…（君のぞとか）。</p>



<p class="wp-block-paragraph">　ちなみに、購入から４日後に整備済Macのページを見ましたが、Mac Studio M4 Maxの在庫は消し飛んでいました。ラス１だったのか在庫僅少だったのかは分かりませんが、たった１つ言えることは「様子見せずに、買っておいてよかったーーー！！！」</p>



<a rel="noopener" href="https://www.apple.com/jp/shop/refurbished/mac/mac-studio" title="Mac整備済製品 - Mac Studio" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://toybox.uranos8685.mydns.jp/wp-content/uploads/cocoon-resources/blog-card-cache/0f3f53904f53e7f1dffac5b4f9e61def.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Mac整備済製品 - Mac Studio</div><div class="blogcard-snippet external-blogcard-snippet">整備済製品のMac Studioを最大15%引きの特別価格で購入できます。Appleが点検し、認定しています。1年間の製品保証も付いています。送料無料。返品も無料です。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.apple.com/jp/shop/refurbished/mac/mac-studio" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.apple.com</div></div></div></div></a><p>The post <a href="https://toybox.uranos8685.mydns.jp/2025/09/08/mac-studio-m4max%e3%82%92%e8%b2%b7%e3%81%a3%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e3%81%8a%e8%a9%b1/">Mac Studio M4 Maxを買ってしまったお話</a> first appeared on <a href="https://toybox.uranos8685.mydns.jp">Uranos8685のおもちゃ箱</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://toybox.uranos8685.mydns.jp/2025/09/08/mac-studio-m4max%e3%82%92%e8%b2%b7%e3%81%a3%e3%81%a6%e3%81%97%e3%81%be%e3%81%a3%e3%81%9f%e3%81%8a%e8%a9%b1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">291</post-id>	</item>
	</channel>
</rss>
