ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

2026年5月1日金曜日

.safetensorsのggufへの変換

一般的なllmであれば、llama.cppのconvert_hf_to_gguf.pyが一番なのは間違いなさそうですが、実際にやりたいのはstable-diffusionで使用するclipなんとかとか、t5なんとかの.safetensorsで正直中身がどうなってるのか良く分かってない。

2020年7月31日金曜日

ドライバで気になっていること

ドライバでちゃんと動作しているのか確認するために色々見ていたところ、メモリーアクセス時のアライメントはどうなっているのか?という点

試しにGPIOレジスタ周りで実際に表示させてみたところ

[250867.394720] f0abd000 00008900
[250867.394733] f0abd000 00008900
[250867.394749] f0abd001 00677069
[250867.394764] f0abd002 69006770
[250867.394778] f0abd003 70690067
[250867.394790] f0abd004 00024000

アドレスとその内容を出力させてみると、4バイトごとの時には正しくアクセスできているようですが、アライメントからずれているとどうも前後ではない部分にアクセスしている感じ。
気になるのはその「どこか」の内容がそれなりにずれているのも気になります。

一回りしてpythonに戻って

一通り手直しを終え、ドライバが無かったらそれなりに動く形のものに落ち着きました。

各変数の位置がいい加減だったり、配列は相変わらずどんぶりだったりと突っ込み所も多いですが、参考になれば

2020年7月6日月曜日

意外と変なところに躓く…

グラフの表示をかなーり低レベルで自前で折れ線グラフを書いているわけですが、いろいろと引っかかってきました。
設定ファイルとしてiniファイルを使ってみたところ、phpではコメントに2byteコードを書いても無視してくれるのですが、python3だとコードページが違うだとか結構面倒な感じに。
Windows10のメモ帳でもUTF-8が扱えることを考慮すると、すべてUTF-8で揃えてしまうのが幸せになれそうなのですが、iniファイルといえばシフトJISとか変なプライドが邪魔してしまい、shft-jisファイル形式のままアップロードしています。

昔はクライアント内ではクライアント側のファイル形式や文字コードで管理してftpで変換し、サーバー側ではサーバーのファイル形式、文字コードという考え方でよかったのですが、最近はやってもファイル形式(とはいっても改行コード変換程度)で文字コードはそのままというかなりアバウトな感じで管理していました。
その一つにphpが結構いい感じに文字コードや改行コードを無視してくれるというのがあったのですが、これがpython3になると、スクリプト内の文字コードも結構厳しかったり、パーサーなどもしっかりとコードページを意識しているので簡単に処理が通らなくなってきます。

一番最悪だったのがiniファイルをsift-jisのままアップロードして、サーバー側のテキストエディタでコメントまでコピペして保存するとそのファイルはsift-jisとUTF-8が混在した不思議なファイルが出来上がってしまうと、python3のiniパーサーで直接扱うことができなくなってしまいます。
サーバー側で直接触らなければいいのでしょうけど、設定ファイルだし直接触りたい欲求はあるわけです。
で、python3でiniファイルを扱うときは予めコメントをカットしてパーサーに渡してあげれば…とか考えたんですけど、そこまでしてオーバーヘッド増やすなら、いっそのこと全部UTF-8でいいんじゃ?的なw

phpのiniファイル絡みでもう一つ。
iniファイル上のセクション名などに関して数字で始まる文字は数値になるとかいう仕様があってこれが値に対しても行われるのかな?と思ったら行われていなかったという。
色の設定を行いたくて、
name=0xF0F000
みたいな設定を行ったら、結果としてiniパーサで、文字列として取り込まれていたのですが、これが分かるまでに結構四苦八苦しました。
結果としてデバッグ用に if (php_sapi_name() == 'cli') とか判断して色々出力するようにしておきました。これで今後はかなり複雑怪奇な形になっても内部が目で見えるようになるので便利かな?

2017年9月8日金曜日

python + sqlite3で文字列から数値に勝手に変換される?

ロギングさせるために変なところで躓いているところが。

一つ目としてSQLite3でcreate tableで型を指定してもどんな型でもそれなりに保持されてしまう。
使用用途がそういう感じなのでこれはこれでいいのかもしれない。
integerで項目を作ってもtextを使用すればそのまま登録されてしまう。
小数点のデータの場合はもっと深刻で小数点以下が2進数で表現できない場合、誤差が表示されて気持ちが悪い。

2017年9月6日水曜日

16進数表記でマイナス?

内部の値をチェックしようとprintさせてみると奇妙な表示になってしまい気になりました。

9790 -2940 0BD0 1C75 -08E

表示方法はprint "{0:04X}".format(i)とかそんな感じです。